77

I've found that is_front_page appears to return true when I'm viewing the home page and have a single sticky post assigned there.

It also returns true when I've assigned a page as the static front page via Settings > Reading.

Why would I ever want to use is_home()?

4 Answers 4

80

is_front_page() returns true if the user is on the page or page of posts that is set to the front page on Settings->Reading->Your homepage displays

So if you set about us as the front page then this conditional will only be true if showing the about us page.

is_home() return true when on the posts list page, This is usually the page that shows the latest 10 posts.

If the settings under Your homepage displays are left at default then the home page will return true for both is_front_page() and is_home()

An example of using is_home():

  • You have set your posts page to a page called News.
  • A user navigates there and in the header you want to show additional navigation
  • You could use is_home() to do this.
2
  • 20
    Exactly. I differentiate as follows: is_front_page() returns true when viewing the Site Front Page (whether displaying the blog posts index or a static page), while is_home() returns true when viewing the Blog Posts Index (whether displayed on the front page or on a static page). Commented Oct 6, 2011 at 11:40
  • 1
    Perhaps time for an alias e.g. is_post_index or something? Another ridiculous example of WP's obsessive backwards compatibility actually hurting usability. Commented Jan 30, 2023 at 10:08
5

I've discovered that is_home() and is_front_page() don't deliver what's expected for multisites. My workaround using built in PHP goodies:

if($_SERVER['REQUEST_URI'] == '/') {
    // you must be on the home page
}

As mentioned in the comments, this approach will not work for WP instances installed in subdirectories of the web root. Use at your discretion.

7
  • Please elaborate on how it doesn't deliver what's expected.
    – Christine Cooper
    Commented May 3, 2016 at 16:58
  • On a multi-site main site if you use any form of is_home() or is_front_page() on a static or blog frontpage the functions will both return false. Commented May 3, 2016 at 17:12
  • 1
    I just tested both conditions on a multisite environment and both returned true when I visited the respective / pages.
    – Christine Cooper
    Commented May 4, 2016 at 9:53
  • I am using the wordpress VVV box with the multisite plugin : github.com/Varying-Vagrant-Vagrants/vvv-multisite perhaps there's something misconfigured on it? Regardless just leaving an answer for a workaround if anyone comes along with a similar situation. Commented May 4, 2016 at 13:07
  • 1
    You're code is almost perfect, the only thing is: What if WP is installed in a subdirectory, for example /blog or /wordpress. Than this will be useless. Commented Nov 2, 2018 at 8:37
1

You'd want to use is_home() when you want to check if the user is viewing your list of blog posts (usually set to display 10 posts per page). If you have a home.php file in your theme, that will be displayed when the is_home() condition is true.

The following can possibly remove some confusion as well: when is_front_page() and is_home() conditions, both are true, the template front-page.php will be used instead of home.php.

0
  • You visit a frontpage that is a blog homepage => is_front_page() = TRUE && is_home() = TRUE
  • You visit a front page that is a static page => is_front_page() = TRUE && is_home() = FALSE
  • You visit the blog homepage but your front page is a static page => is_front_page() = FALSE && is_home() = TRUE (Also TRUE when reaching paginated pages)

References for definitions:

https://developer.wordpress.org/reference/functions/is_home/ https://developer.wordpress.org/reference/functions/is_front_page/

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