Потратил сегодня пару часов, пытаясь понять, почему функция is_home() возвращает значение TRUE даже если открыта не главная страница блога. Путем тестов выяснилось, что за главную страницу считается любая страница, образованная постраничной навигацией (/page/2, /page/3 и т.д.). Если подумать, то это вполне логично для функций типа is_category() - ведь при переходе на вторую страницу определенной рубрики сама рубрика остается той же самой. Но ситуация с is_home() совершенно другая - главных страниц в блоге не может быть больше одной. Вероятно для создателей WordPress понятие "main blog page" сродни категории с таким же названием. Обойти проблему оказалось довольно легко, надо вместо кода:
<?phpif( is_home()){?>
<h1>Главная страница!</h1>
<?php}else{?>
<h1>Это не главная страница!</h1>
<?php}?>
<?php if ( is_home() ) { ?>
<h1>Главная страница!</h1>
<?php } else { ?>
<h1>Это не главная страница!</h1>
<?php } ?>
Использовать код:
<?phpif((is_home())&&!(is_paged())){?>
<h1>Главная страница!</h1>
<?php}else{?>
<h1>Это не главная страница!</h1>
<?php}?>
<?php if ( (is_home())&&!(is_paged()) ) { ?>
<h1>Главная страница!</h1>
<?php } else { ?>
<h1>Это не главная страница!</h1>
<?php } ?>
Как вы видите, решение оказалось элементарным. Жаль, что для его поиска пришлось закопаться в форумы поддержки, так как в документации ничего подобного не нашлось.
Ребята, не забывайте о том что если у вас главная страница является статической - то есть вывод заданой page в админке, то такое условие работать не будет. Нужно использовать проверку следующего вида: is_front_page() - работает сто процентно!
Вот спасибо, а то рекламу, что то совсем неохота было вручную на каждый пост вставлять. А printf на главной в каждом посте выводил, что тоже не симпатично.
#21,
что доходить то? это в статье изначально есть.
а кодекс вещь хорошая, но не все там есть и не всегда.
#22,
Ребята, не забывайте о том что если у вас главная страница является статической - то есть вывод заданой page в админке, то такое условие работать не будет. Нужно использовать проверку следующего вида:
is_front_page() - работает сто процентно!
#23,
Василий СПАСИБО!!))) Вожусь уже 2-й час не могу добиться чтоб условие выполнялось. А теперь все работает ЧЕТКО!)
#24,
Вот спасибо, а то рекламу, что то совсем неохота было вручную на каждый пост вставлять. А printf на главной в каждом посте выводил, что тоже не симпатично.
#25,
Ну, зато я эту информацию нашёл в считанные секунды, благодаря твоим трудам ;)
#26,
Спасибо мне как раз функцию is_category() надо было)
#27,
Пойдет, мне помогло, спасибо! :))
#28,
Спасибо огромное! Статья и комментарии ответили на все мои вопросы!
#29,
Отличный выбор! Спасибо за труд и то, что помогли решить вопрос!