Проблема с использованием функции is_home()
Потратил сегодня пару часов, пытаясь понять, почему функция возвращает значение TRUE даже если открыта не главная страница блога. Путем тестов выяснилось, что за главную страницу считается любая страница, образованная постраничной навигацией (/page/2, /page/3 и т.д.). Если подумать, то это вполне логично для функций типа - ведь при переходе на вторую страницу определенной рубрики сама рубрика остается той же самой. Но ситуация с is_home() совершенно другая - главных страниц в блоге не может быть больше одной. Вероятно для создателей WordPress понятие "main blog page" сродни категории с таким же названием. Обойти проблему оказалось довольно легко, надо вместо кода:
<?php if ( is_home() ) { ?> <h1>Главная страница!</h1> <?php } else { ?> <h1>Это не главная страница!</h1> <?php } ?>
Использовать код:
<?php if ( (is_home())&&!(is_paged()) ) { ?> <h1>Главная страница!</h1> <?php } else { ?> <h1>Это не главная страница!</h1> <?php } ?>
Как вы видите, решение оказалось элементарным. Жаль, что для его поиска пришлось закопаться в форумы поддержки, так как в ничего подобного не нашлось.
Рекомендую также:

#16, 16 августа, 2009 в 20:17
если нет навигации, то в чем проблема с is_home? ))
#17, 16 августа, 2009 в 20:22
в том то и была проблема, что данная функция у меня не работала
#18, 16 августа, 2009 в 20:45
Вы WP кодекс то читали? Выше посмотрите что я писал, как правильно делать, что бы точно определить главную.
#19, 16 августа, 2009 в 21:02
а зачем лишний код? проверки на &&!(is_paged() имхо вполне достаточно.
#20, 16 августа, 2009 в 21:08
И тут до вас начало доходить... )
#21, 16 августа, 2009 в 21:13
что доходить то? это в статье изначально есть.
а кодекс вещь хорошая, но не все там есть и не всегда.
#22, 9 декабря, 2009 в 10:50
Ребята, не забывайте о том что если у вас главная страница является статической - то есть вывод заданой page в админке, то такое условие работать не будет. Нужно использовать проверку следующего вида:
is_front_page() - работает сто процентно!