Проблема с использованием функции is_home()
Потратил сегодня пару часов, пытаясь понять почему функция is_home() возвращает значение TRUE даже если открыта не главная страница блога. Путем тестов выяснилось, что за главную страницу считается любая страница, образованная постраничной навигацией (/page/2, /page/3 и т.д.).
Понравился пост? Подпишись на обновления по RSS или Twitter !
#1,
Привет. В чем практическая польза данного изменения? Это правиться в коде самого движка или в теме?
#2,
в шаблоне. используется, например, для показа баннеров только на главной странице. или для показа названия блога только на главной. что с обычным использованием is_home невозможно.
#3,
По терминологии в документации WP корневая страница блога считается главной, просто она может быть "разбита" на множество страниц :) Кстати, про is_paged() в документации - есть.
Но, насколько я понимаю, начиная с версии 2.5 появилась другая функция, позволяющая определить главную страницу - is_front_page()
#4,
есть, конечно. но не в описании функции is_home. нельзя физически пересмотреть все существующие функции, чтобы найти почему не работает одна единственная.
вы удивитесь, но с этой функцией абсолютно аналогичная проблема - без is_paged она возвращает TRUE не только с главной ))
#5,
Все-таки рискну предположить, что вы не очень внимательно читали кодекс. В WP конечно специфические понятия и терминология: main page - это непрерывная "лента" постов, на ней находятся все посты от первого до последнего, кроме автономных страниц (pages). Например, перемещаясь на 2-ю, 3-ю страницу вашего блога, пользователь все еще находится на этой "ленте" постов (главной странице), просто со смещением в n постов.
#6,
Самое железное решение -- использовать вместо (is_home())
т.к. в зависимости от начинки первой страницы варианты могут быть разные, а такое условие сработает всегда.
#7,
мда что-то с кодом не получилось, попробую еще раз, был такой:
а чтоб работала фунция is_home() нужно такой:
#8,
Спасибо. Сэкономил время мне. Кстати по запросу is_home в яндексе, эта страница первая, так что не зря старался)
А нужно мне это было чтобы сделать разные названия страницам page/2,3 и т.п. и главной.. Чтобы гугля любил, он в webmasters мне это посоветовал сделать, сказав что у страниц одинаковые названия. Теперь бы еще догнать как в название (title) если else выводить разные названия, например добавлять номер страницы.. Если есть идея рабочая - буду рад.
#9,
Спасибо за работающий рецепт (проверено на 2.7) !
#10,
А если быть более точным, то это надо делать вот так:
#11,
Спасибо за подсказку! в моем слкчае именно is_front_page и помогло! все остальное даже не было смысла пробовать :)
#12,
вы не правы - с is_front_page та же проблема, что и с is_home. я об этом уже выше писал.
#13,
Только что установил на сайте под моим ником (посмотрите), там работает именно is_front_page, а до этого также бился с проблемой is_home!
#14,
у вас на главной выводятся не "Ваши последние записи", а "статическая страница"?
просто если на странице все записи не помещаются и появляется постраничная навигация - WP любую такую страницу тоже считает главной. она типа главная, просто разбита на страницы.
#15,
Навигация для главной у меня не предусмотрена, хотя там и выводятся "последние записи". Очевидно, так оно и есть, как вы написали, если главная разбивается на отдельные страницы...
#16,
если нет навигации, то в чем проблема с is_home? ))
#17,
в том то и была проблема, что данная функция у меня не работала
#18,
Вы WP кодекс то читали? Выше посмотрите что я писал, как правильно делать, что бы точно определить главную.
#19,
а зачем лишний код? проверки на &&!(is_paged() имхо вполне достаточно.
#20,
И тут до вас начало доходить... )