Когда использовать is_home() и is_front_page()?
Я обнаружил, что is_front_page возвращает true, когда я просматриваю главную страницу и на ней есть назначенная закрепленная запись.
Она также возвращает true, когда я назначил страницу в качестве статической главной страницы через Настройки > Чтение.
В каких случаях мне может понадобиться использовать is_home()?
is_front_page() возвращает true, если пользователь находится на странице или странице записей, которая установлена как главная в Настройки->Чтение->Ваша главная страница.
Например, если вы установите страницу о нас как главную, то это условие будет истинным только при отображении страницы о нас.
is_home() возвращает true, когда отображается страница со списком записей. Обычно это страница, которая показывает последние 10 записей.
Если настройки в разделе Ваша главная страница отображает оставлены по умолчанию, то главная страница будет возвращать true и для is_front_page(), и для is_home().
Пример использования is_home():
- Вы установили страницу записей на страницу под названием Новости.
- Пользователь переходит на неё, и в шапке вы хотите показать дополнительную навигацию.
- Вы можете использовать
is_home()для этого.
Именно. Я различаю это следующим образом: is_front_page() возвращает true при просмотре Главной страницы сайта (независимо от того, отображается ли индекс записей блога или статическая страница), тогда как is_home() возвращает true при просмотре Индекса записей блога (независимо от того, отображается ли он на главной странице или на статической странице).
Chip Bennett
Я обнаружил, что функции is_home() и is_front_page() не работают так, как ожидается, в мультисайтах. Моё решение с использованием встроенных возможностей PHP:
if($_SERVER['REQUEST_URI'] == '/') {
// вы находитесь на главной странице
}
Как упоминалось в комментариях, этот подход не будет работать для установок WordPress в поддиректориях корневой веб-папки. Используйте на своё усмотрение.
Пожалуйста, подробнее объясните, почему оно не работает так, как ожидается.
Christine Cooper
На главном сайте мультисайта, если вы используете любую форму is_home() или is_front_page() на статической или блоговой главной странице, обе функции вернут false.
Dylan Pierce
Я только что протестировал оба условия в среде мультисайта, и оба вернули true при посещении соответствующих страниц /.
Christine Cooper
Я использую WordPress VVV бокс с плагином для мультисайта: https://github.com/Varying-Vagrant-Vagrants/vvv-multisite Возможно, в нём что-то неправильно настроено? В любом случае, оставляю ответ с обходным решением на случай, если кто-то столкнётся с похожей ситуацией.
Dylan Pierce
Ваш код почти идеален, единственное: что если WordPress установлен в подкаталоге, например /blog или /wordpress? Тогда это будет бесполезно.
Remzi Cavdar
@RemziCavdar это правда. Я отредактирую свой ответ. К сожалению, из-за множества способов хостинга WordPress вы сталкиваетесь со множеством проблем.
Dylan Pierce
Функцию is_home() следует использовать, когда вам нужно проверить, просматривает ли пользователь список записей блога (обычно отображается по 10 записей на странице). Если в вашей теме есть файл home.php, он будет отображаться, когда условие is_home() возвращает true.
Следующее пояснение может помочь избежать путаницы: если условия is_front_page() и is_home() возвращают true одновременно, будет использоваться шаблон front-page.php вместо home.php.
- Вы посещаете главную страницу, которая является домашней страницей блога => is_front_page() = TRUE && is_home() = TRUE
- Вы посещаете главную страницу, которая является статической страницей => is_front_page() = TRUE && is_home() = FALSE
- Вы посещаете домашнюю страницу блога, но ваша главная страница является статической => is_front_page() = FALSE && is_home() = TRUE (Также TRUE при переходе на страницы с пагинацией)
Ссылки на определения:
https://developer.wordpress.org/reference/functions/is_home/ https://developer.wordpress.org/reference/functions/is_front_page/