0

I'm trying to target my landing page with is_front_page or is_home in my page.php file but it's not working. I have set the settings > reading to a static page.

However, if I create a page-home.php everything works fine (without the tags of course). But, if I use the is_front_page or is_home on the index file they will work (on my blog page).

Am I just misunderstanding their function and if so, how can I target the landing page dynamically?

<?php get_header(); ?>

<?php if ( is_front_page() || is_home() ) : ?>
    <h1>Why not???</h1>
<?php endif; ?>

<div>
    <article>
        <?php get_template_part( 'loop', 'page' ); ?>
    </article>

    <aside>
        <?php get_sidebar(); ?>
    </aside>
</div>

<?php comments_template(); ?>

<?php get_footer(); ?>

1 Answer 1

2

Ok, if you take a look at implementation of is_front_page, you will see the following:

/**
 * Is the query for the front page of the site?
 *
 * This is for what is displayed at your site's main URL.
 *
 * Depends on the site's "Front page displays" Reading Settings 'show_on_front' and 'page_on_front'.
 *
 * If you set a static page for the front page of your site, this function will return
 * true when viewing that page.
 *
 * Otherwise the same as @see WP_Query::is_home()
 *
 * @since 3.1.0
 * @uses is_home()
 * @uses get_option()
 *
 * @return bool True, if front of site.
 */
function is_front_page() {
    // most likely case
    if ( 'posts' == get_option( 'show_on_front') && $this->is_home() )
        return true;
    elseif ( 'page' == get_option( 'show_on_front') && get_option( 'page_on_front' ) && $this->is_page( get_option( 'page_on_front' ) ) )
        return true;
    else
        return false;
}

So I think the answer of your question is in this sentence If you set a static page for the front page of your site, this function will return true when viewing that page. It means that to make your page.php working as you want, you need to go to the "Settings" -> "Reading" page and set "Front page displays" option.

11
  • Thanks Eugene, I have the reading settings set to static page (just clarified that above). But the problem still exists.
    – Marc Wiest
    Commented Mar 23, 2012 at 22:11
  • 1
    Is the above snippet from the wp core? I don't assume that I have to implement it, or?
    – Marc Wiest
    Commented Mar 23, 2012 at 22:13
  • Yes it is from the WP core, it is WP_Query class. Commented Mar 23, 2012 at 22:14
  • 1
    Open this url in your browser: yourdomain.com/wp-admin/post.php?post=6&action=edit and if you see that the page section selected in admin menu, then it means that it is the page, if post section selected then it is post. Commented Mar 23, 2012 at 22:31
  • 1
    Figured it out! Thanks so much Eugene! I had the wrong page selected in settings > reading ... doh!
    – Marc Wiest
    Commented Mar 23, 2012 at 22:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.