• I have a new site that is running on DreamHost (their standard WordPress 4.4.1 installation) and I have installed a commercial theme that is not working properly. I have tracked the problem to getting the “wrong” answer from the is_page_template function on my site. The theme author claims she is running the same version of WordPress and is not seeing the same results. The theme uses this function to conditionally enqueue some scripts and on my site, the needed scripts are not being included. On my site, I’ve added the following test:

    echo '<!-- DEBUGWH '.get_page_template();
         if (is_page_template( 'page-home.php' )) {
           echo ' is page-home';
         }
         else {
           echo ' is not page-home';
         }
         echo '-->';

    The output of this code on my site is:

    <!-- DEBUGWH site-prefix/wp-content/themes/wp-newjerusalem/page-home.php is not page-home-->

    So get_page_template says the template is page-home.php but is_page_template says that it is not, a contradiction.

    The code appears in an appropriate point in the functions.php file and the author has a demonstration site where the results are correct. I am not sure she has the exact same version of WordPress.

    I am at a loss as to where to go next to resolve this issue.

    You can currently set this in action at https://www.bethdavidri.org

Viewing 10 replies - 1 through 10 (of 10 total)
  • Try installing this plugin:

    https://www.ads-software.com/plugins/query-monitor/

    Then navigate to the page in question and hover over the Query Monitor stats in the admin bar. You will get a dropdown that displays the current page template and conditionals to use for that template and other information.

    See if that clears up any confusion.

    Thread Starter Mardovar

    (@mardovar)

    I installed the plug-in and saw what I expected.
    Template: page-home.php
    is_front_page()
    is_page()
    is_singular().

    All as expected and does not explain why
    is_page_template( ‘page-home.php’ ))
    returned false in this case.

    On my site, I’ve added the following test:

    where in what file have you added the code?

    Thread Starter Mardovar

    (@mardovar)

    The code is in functions.php. It is in function virtuti_scripts_method which is run by

    attraction( ‘wp_enqueue_scripts’, ‘virtuti_scripts_method’ );

    The functions.php was supplied as part of the New Jerusalem theme from themeforest.net. The function I modified is used to wp_enqueue_script the various scripts used by this theme. Two of the scripts are used only on the home page and the theme uses the test if(is_page_template( ‘page-home.php’ )) to limit these to the home page. This is not working on my web site, but the theme author has multiple examples of the code working elsewhere. She says she has tested with 4.2 and 4.4.2 while I am running 4.4.1.

    Thread Starter Mardovar

    (@mardovar)

    I think spelling correction changed the line of code in the previous comment that starts “attraction”. It should say

    add_action( 'wp_enqueue_scripts', 'virtuti_scripts_method' );

    Why not just use this instead:

    if (is_front_page())

    Thread Starter Mardovar

    (@mardovar)

    I may do that to fix my site, but I was trying to understand why this code works in other locations but not my site. The author of the theme is saying the problem is not her fault. If I did something wrong, I’d like to know what it was. The site is a fresh install using the DreamHost 1 click installer and then the theme was added. I was hoping to avoid having to mod the theme.

    Another thought… Is your template located in a subfolder? If so you need to use the relative path:

    e.g. if (is_page_template( ‘templates/page-home.php’ ))

    Thread Starter Mardovar

    (@mardovar)

    Thanks for the thought, but the debug printout shows that it is not in a subfolder, site-prefix/wp-content/themes/wp-newjerusalem/page-home.php

    Thread Starter Mardovar

    (@mardovar)

    the code is_front_page()) does work for this case and I have put that patch on my site. Since the theme page could be used for a page other than the front page, it isn’t a perfect fix, but it will do for us for now. Could something be broken in version 4.4.1 that has already been fixed? I reviewed the update log and nothing popped out that looked like someone fixing this.

Viewing 10 replies - 1 through 10 (of 10 total)
  • The topic ‘is_page_template giving wrong answer on site’ is closed to new replies.