Override templates
Copy a file from the parent theme into your child theme, keeping the same path, and WordPress loads yours instead.
wp-content/themes/rural-blog/template-parts/content.php
↓ copy to
wp-content/themes/rural-blog-child/template-parts/content.php
That is the whole mechanism.
The templates
| File | Renders |
|---|---|
index.php |
Every listing: blog home, posts page, category, tag, author, date, CPT archive |
single.php |
A single post |
page.php |
A page |
search.php |
Search results |
404.php |
Not found |
comments.php |
The comment thread and form |
searchform.php |
The search form |
header.php |
Everything to the start of the content |
footer.php |
The footer, scroll-to-top and the mobile panel |
template-archives.php |
The Archives page template |
The template parts
| File | Renders |
|---|---|
template-parts/content.php |
One post in a listing — all three display modes |
template-parts/content-single.php |
The body of a single post |
template-parts/content-page.php |
The body of a page |
template-parts/content-search.php |
One search result |
template-parts/content-archives.php |
The Archives page body |
template-parts/content-none.php |
“Nothing here” |
template-parts/archive-header.php |
The title/description block above a listing |
template-parts/author-bio.php |
The author box |
template-parts/tags.php |
The tag list |
template-parts/sticky-label.php |
The Pinned post label |
Before you copy anything
Check there is not a setting for it. Most of what people reach for a template override to do is a Customizer control — the meta position, the display mode, whether the author box appears.
Check there is not a hook for it. Adding an ACF field to the meta row is the
rural_blog_meta action, not a copy of content.php. See
Hooks and filters.
Copy the smallest file that does the job. Overriding template-parts/tags.php
is a file you will never have to look at again; overriding index.php is a file
you now maintain against every future release.
Functions, not templates
The theme’s template tags are all wrapped in if ( ! function_exists() ), so a
child theme can define its own version of one before the parent loads and the
parent will step aside. rural_blog_post_meta(), rural_blog_post_thumbnail(),
rural_blog_pagination(), rural_blog_site_branding() and the rest are all
replaceable this way.
Define yours in the child’s functions.php — it loads first — and the parent
skips its own.
This is often cleaner than copying a template: you replace one function rather than inheriting a whole file’s future changes.
Keeping up with updates
An overridden file is frozen at the version you copied. When the parent changes that file in a later release, your copy does not get the change — including bug fixes.
Note which files you have overridden and skim the changelog at each update for changes that touch them.