[wp-trac] [WordPress Trac] #59252: is_front_page returns false when a static blog page has been set.

WordPress Trac noreply at wordpress.org
Tue Feb 4 21:29:42 UTC 2025


#59252: is_front_page returns false when a static blog page has been set.
--------------------------+------------------------------
 Reporter:  neo2k23       |       Owner:  joedolson
     Type:  defect (bug)  |      Status:  accepted
 Priority:  normal        |   Milestone:  Awaiting Review
Component:  Query         |     Version:  2.5
 Severity:  normal        |  Resolution:
 Keywords:  has-patch     |     Focuses:
--------------------------+------------------------------
Changes (by sabernhardt):

 * component:  General => Query
 * milestone:   => Awaiting Review


Old description:

> Hi
>
> I have a question. I do not know if this is a bug or not, but the
> behaviour of the is_front_page() function is bit ackward.
>
> If no static homepage has been set and you call on the home page the
> function is_front_page()  it returns true. If you call is_home() it also
> retruns true.
>
> However the moment you set a static blog page (not home page) that same
> call for is_front_page on the home page returns false, but is_home()
> still returns true.
>
> Is this a bug?  It does not seem consistent to me as there is no static
> home page set why does is_front_page() return true when no static blog
> page has been set and return false the moment a static blog page is set.
>
> What has the static blog page set in the reading settings to do with the
> is_front_page() function?
>
> Can somebody please explain this to me as it does not make sense given
> the description of is_front_page() function?
>
> Thank you
>
> see image
>
> [[Image(https://share.getcloudapp.com/4guXkxZy)]]
>
> **STEPS TO CREATE THE SAME RESULTS!**
>
> Tested with wp 6.4 latest trunk build clean wordpress. 20-21 theme and
> php 8.0.x
>
> just add this code to the index.php
>
> {{{#!php
> <?php
> if ( is_home() ) echo '---------------> this is home.';
> if ( is_front_page() ) echo '---------------> this is frontpage.';
> ?>
> }}}
>
> see image below  where i added the php code
>
> [[Image(https://share.getcloudapp.com/lluXB459)]]
>

> The complete altered index.php of the 20-21 theme below
>
> {{{#!php
> <?php
> /**
>  * The main template file
>  *
>  * This is the most generic template file in a WordPress theme
>  * and one of the two required files for a theme (the other being
> style.css).
>  * It is used to display a page when nothing more specific matches a
> query.
>  * E.g., it puts together the home page when no home.php file exists.
>  *
>  * @link https://developer.wordpress.org/themes/basics/template-
> hierarchy/
>  *
>  * @package WordPress
>  * @subpackage Twenty_Twenty_One
>  * @since Twenty Twenty-One 1.0
>  */
>
> get_header(); ?>
>
> <?php if ( is_home() && ! is_front_page() && ! empty( single_post_title(
> '', false ) ) ) : ?>
>         <header class="page-header alignwide">
>                 <h1 class="page-title"><?php single_post_title(); echo
> 'HELLO fucking WORLD'; ?></h1>
>         </header><!-- .page-header -->
> <?php endif; ?>
> <?php
> if ( is_home() ) echo '---------------> this is home.';
> if ( is_front_page() ) echo '---------------> this is frontpage.';
> ?>
>
> <?php
> if ( have_posts() ) {
>
>         // Load posts loop.
>         while ( have_posts() ) {
>                 the_post();
>
>                 get_template_part( 'template-parts/content/content',
> get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
>         }
>
>         // Previous/next page navigation.
>         twenty_twenty_one_the_posts_navigation();
>
> } else {
>
>         // If no content, include the "No posts found" template.
>         get_template_part( 'template-parts/content/content-none' );
>
> }
>
> get_footer();
>
> }}}

New description:

 Hi

 I have a question. I do not know if this is a bug or not, but the
 behaviour of the `is_front_page()` function is bit ackward.

 If no static homepage has been set and you call on the home page the
 function `is_front_page()`  it returns true. If you call `is_home()` it
 also returns true.

 However the moment you set a static blog page (not home page) that same
 call for `is_front_page` on the home page returns false, but `is_home()`
 still returns true.

 Is this a bug?  It does not seem consistent to me as there is no static
 home page set why does `is_front_page()` return true when no static blog
 page has been set and return false the moment a static blog page is set.

 What has the static blog page set in the reading settings to do with the
 `is_front_page()` function?

 Can somebody please explain this to me as it does not make sense given the
 description of `is_front_page()` function?

 Thank you

 see image

 [[Image(https://share.getcloudapp.com/4guXkxZy)]]

 **STEPS TO CREATE THE SAME RESULTS!**

 Tested with wp 6.4 latest trunk build clean wordpress. 20-21 theme and php
 8.0.x

 just add this code to the `index.php`

 {{{#!php
 <?php
 if ( is_home() ) echo '---------------> this is home.';
 if ( is_front_page() ) echo '---------------> this is frontpage.';
 ?>
 }}}

 see image below  where i added the php code

 [[Image(https://share.getcloudapp.com/lluXB459)]]


 The complete altered index.php of the 20-21 theme below

 {{{#!php
 <?php
 /**
  * The main template file
  *
  * This is the most generic template file in a WordPress theme
  * and one of the two required files for a theme (the other being
 style.css).
  * It is used to display a page when nothing more specific matches a
 query.
  * E.g., it puts together the home page when no home.php file exists.
  *
  * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
  *
  * @package WordPress
  * @subpackage Twenty_Twenty_One
  * @since Twenty Twenty-One 1.0
  */

 get_header(); ?>

 <?php if ( is_home() && ! is_front_page() && ! empty( single_post_title(
 '', false ) ) ) : ?>
         <header class="page-header alignwide">
                 <h1 class="page-title"><?php single_post_title(); echo
 'HELLO WORLD'; ?></h1>
         </header><!-- .page-header -->
 <?php endif; ?>
 <?php
 if ( is_home() ) echo '---------------> this is home.';
 if ( is_front_page() ) echo '---------------> this is frontpage.';
 ?>

 <?php
 if ( have_posts() ) {

         // Load posts loop.
         while ( have_posts() ) {
                 the_post();

                 get_template_part( 'template-parts/content/content',
 get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
         }

         // Previous/next page navigation.
         twenty_twenty_one_the_posts_navigation();

 } else {

         // If no content, include the "No posts found" template.
         get_template_part( 'template-parts/content/content-none' );

 }

 get_footer();

 }}}

--

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/59252#comment:9>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list