I have a simple problem I’m hoping someone can shed some light on. I have a child theme with a custom page template and I’m simply trying to check weather or not the template is in use. Under normal circumstances, I would have just used the is_page_template
function, however it doesn’t seem to be working with child themes. I’ve tried the following
if(is_page_template('template-custom-fullwidth.php')){
//do something..
}
as well as
if(is_page_template(dirname(get_bloginfo('stylesheet_url')).'/template-custom-fullwidth.php'){
//do something..
}
Neiter works and I was hoping there is a more elegant solution than using $_SERVER
to check for URLs. I can’t imagine there not being a function for this seeing as this seems like a common task. I believe the problem is the difference between template and stylesheet directories. Is it possible to use WordPress to check for page templates located in a child theme?
Thanks in advance!
I faced similar issue. One few trial and error noticed that if the conditional is kept inside the function it works. but if kept outside it does not.
If is_page_template is used inside the loop try putting
wp_reset_query()
before call to is_page_template.Had the same issue and solved it like this:
get_stylesheet_directory_uri()
won’t work cause it will show the url and you need the server full path, useget_stylesheet_directory()
If
is_page_template()
doesn’t work you can useget_page_template()
and compareTry is_singular(); it worked for my case as my template is a single post page template.
To use it, you need to specify the name of the template without the word
single-
and.php
. For example, if the template file issingle-forest_of_trees.php
, then this should be the code:it also allows an elegant way for multiple values.
What has worked for me is (in functions.php):
The only thing that works for me in a child theme is accessing the global $template variable and comparing against it:
Use a relative path from your theme’s folder:
Reference this WP Codex page: http://codex.wordpress.org/Function_Reference/get_stylesheet_directory_uri
Use
get_stylesheet_directory_uri
instead. This should work: