I have created a page template called concert.php
under page-templates
directory with the following content:
<?php
/* Template Name: Concert*/
add_body_classes('page_concert'); /* Custom function that adds arguments to
body class using body_class filter */
get_header();
...
get_footer();
?>
The template shows up in the page editor as expected, however when loading a page that uses this template the default page.php
template is used instead.
I've read in some threads that for a child theme to properly load page templates it is necessery to have a proper index.php
, header.php
and page.php
, which I do have set in my theme folder. Also, some people have pointed out that the existence of a front-page.php
leads to home page not loading its set template, however deleting the file from parent theme didn't do much for me.
The use of Template: theme-name
inside the theme's style.css
has said to be problematic, as well. But without that line of code the child theme becomes a standalone theme.
How can I make my custom page template work in a child theme? Has anyone been through the same situation?
I have created a page template called concert.php
under page-templates
directory with the following content:
<?php
/* Template Name: Concert*/
add_body_classes('page_concert'); /* Custom function that adds arguments to
body class using body_class filter */
get_header();
...
get_footer();
?>
The template shows up in the page editor as expected, however when loading a page that uses this template the default page.php
template is used instead.
I've read in some threads that for a child theme to properly load page templates it is necessery to have a proper index.php
, header.php
and page.php
, which I do have set in my theme folder. Also, some people have pointed out that the existence of a front-page.php
leads to home page not loading its set template, however deleting the file from parent theme didn't do much for me.
The use of Template: theme-name
inside the theme's style.css
has said to be problematic, as well. But without that line of code the child theme becomes a standalone theme.
How can I make my custom page template work in a child theme? Has anyone been through the same situation?
Edit: I see you've answered your own question, but the answer you provided seems dubious to me, so I'm going to post this anyway.
A child theme needs a few key elements to work: a style.css with header information (including Template: parent-theme-name
), a functions.php file (where you can enqueue the parent theme's stylesheet), and activation of the child theme from the WordPress admin. Learn more about child themes in the WordPress Codex.
Once you have your child theme activated, all files in the child theme will override templates in the parent theme with the same name. Take a look at the template hierarchy to better understand the names of these templates and how they take precedence.
Finally, let's talk about page templates. You have the right idea by calling the file concert.php
since for custom page templates, the file name should not be prepended with page-
. This is used for specific slug- or id-driven page templates. At the top of this file, you need to include /* Template Name: Name of Template */
, just like you have already. This will appear in the page attributes under Template
. After creating this file and storing it in the child theme, you must select this template from the drop-down list under page attributes for your new page. More information on page templates in the WordPress Codex.
I hope this helps!
Never mind. I have deleted front-page.php
from the parent theme once again and now it is working. For some odd reason it didn't work the first time. Maybe I had some other thing set up incorrectly as well.
If anyone can close this thread, please do so!
front-page.php
which lead to my template not being loaded. – Victor Oliveira Commented Mar 21, 2019 at 13:38