Когда использовать is_home() и is_front_page()?

6 окт. 2011 г., 08:42:56
Просмотры: 58.4K
Голосов: 77

Я обнаружил, что is_front_page возвращает true, когда я просматриваю главную страницу и на ней есть назначенная закрепленная запись.

Она также возвращает true, когда я назначил страницу в качестве статической главной страницы через Настройки > Чтение.

В каких случаях мне может понадобиться использовать is_home()?

0
Все ответы на вопрос 4
2
80

is_front_page() возвращает true, если пользователь находится на странице или странице записей, которая установлена как главная в Настройки->Чтение->Ваша главная страница.

Например, если вы установите страницу о нас как главную, то это условие будет истинным только при отображении страницы о нас.

is_home() возвращает true, когда отображается страница со списком записей. Обычно это страница, которая показывает последние 10 записей.

Если настройки в разделе Ваша главная страница отображает оставлены по умолчанию, то главная страница будет возвращать true и для is_front_page(), и для is_home().

Пример использования is_home():

  • Вы установили страницу записей на страницу под названием Новости.
  • Пользователь переходит на неё, и в шапке вы хотите показать дополнительную навигацию.
  • Вы можете использовать is_home() для этого.
6 окт. 2011 г. 09:09:24
Комментарии

Именно. Я различаю это следующим образом: is_front_page() возвращает true при просмотре Главной страницы сайта (независимо от того, отображается ли индекс записей блога или статическая страница), тогда как is_home() возвращает true при просмотре Индекса записей блога (независимо от того, отображается ли он на главной странице или на статической странице).

Chip Bennett Chip Bennett
6 окт. 2011 г. 14:40:27

Возможно, пора ввести псевдоним, например is_post_index или что-то подобное? Ещё один нелепый пример того, как одержимость WordPress обратной совместимостью фактически вредит удобству использования.

Jesse Nickles Jesse Nickles
30 янв. 2023 г. 12:08:07
7

Я обнаружил, что функции is_home() и is_front_page() не работают так, как ожидается, в мультисайтах. Моё решение с использованием встроенных возможностей PHP:

if($_SERVER['REQUEST_URI'] == '/') {
    // вы находитесь на главной странице
}

Как упоминалось в комментариях, этот подход не будет работать для установок WordPress в поддиректориях корневой веб-папки. Используйте на своё усмотрение.

3 мая 2016 г. 18:30:22
Комментарии

Пожалуйста, подробнее объясните, почему оно не работает так, как ожидается.

Christine Cooper Christine Cooper
3 мая 2016 г. 19:58:07

На главном сайте мультисайта, если вы используете любую форму is_home() или is_front_page() на статической или блоговой главной странице, обе функции вернут false.

Dylan Pierce Dylan Pierce
3 мая 2016 г. 20:12:58

Я только что протестировал оба условия в среде мультисайта, и оба вернули true при посещении соответствующих страниц /.

Christine Cooper Christine Cooper
4 мая 2016 г. 12:53:55

Я использую WordPress VVV бокс с плагином для мультисайта: https://github.com/Varying-Vagrant-Vagrants/vvv-multisite Возможно, в нём что-то неправильно настроено? В любом случае, оставляю ответ с обходным решением на случай, если кто-то столкнётся с похожей ситуацией.

Dylan Pierce Dylan Pierce
4 мая 2016 г. 16:07:58

Ваш код почти идеален, единственное: что если WordPress установлен в подкаталоге, например /blog или /wordpress? Тогда это будет бесполезно.

Remzi Cavdar Remzi Cavdar
2 нояб. 2018 г. 10:37:00

@RemziCavdar это правда. Я отредактирую свой ответ. К сожалению, из-за множества способов хостинга WordPress вы сталкиваетесь со множеством проблем.

Dylan Pierce Dylan Pierce
2 нояб. 2018 г. 18:42:32

@DylanPierce Я также поставил тебе лайк. Ответ Brady более надежный. Думаю, vragant неправильно настраивает тестовую среду, потому что и is_front_page(), и is_home() должны работать

Remzi Cavdar Remzi Cavdar
2 нояб. 2018 г. 21:15:19
Показать остальные 2 комментариев
0

Функцию is_home() следует использовать, когда вам нужно проверить, просматривает ли пользователь список записей блога (обычно отображается по 10 записей на странице). Если в вашей теме есть файл home.php, он будет отображаться, когда условие is_home() возвращает true.

Следующее пояснение может помочь избежать путаницы: если условия is_front_page() и is_home() возвращают true одновременно, будет использоваться шаблон front-page.php вместо home.php.

28 апр. 2014 г. 23:53:46
0
  • Вы посещаете главную страницу, которая является домашней страницей блога => 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/

5 февр. 2024 г. 10:50:43