Поиск по сайту:

Главная страница WordPress против домашней страницы


WordPress — потрясающая CMS. Вы можете делать с ним все, что захотите. Но иногда вы можете обнаружить проблемы с некоторыми базовыми функциями. Например, вы, вероятно, используете условные обозначения is_front_page и is_home WordPress Homepage в своих темах и плагинах (подробнее об условных функциях можно узнать в нашей статье об условных тегах). Но ты делаешь это неправильно!

Настройки домашней страницы

С помощью этих условных функций вы можете проверить, отображается ли домашняя страница (is_home) или домашняя страница использует статическую страницу (is_front_page). Вы можете определить такое поведение в Настройки=> Чтение.

В вашем плагине или теме вы можете использовать эти функции для отображения или изменения содержимого в зависимости от настроек пользователя. Но вы делаете огромную ошибку: не учитываете статическую страницу блога. Когда вы определяете статическую страницу для своей домашней страницы, вы также можете определить страницу блога: она заменит домашнюю страницу WordPress по умолчанию, чтобы отображать все сообщения.

Короче говоря: is_front_page всегда следует тестировать с is_home и до него. И вот почему.

Как это работает

1. Обычные настройки:

На домашней странице WordPress по умолчанию перечислены ваши последние публикации.

  • Вот URL: сайт.com.
  • is_home возвращает ИСТИНА
  • is_front_page возвращает TRUE

Здесь нет никакой проблемы.

2. Статическая домашняя страница:

Домашняя страница использует одну из ваших статических страниц.

  • URL-адрес по-прежнему — site.com.
  • is_home возвращает ЛОЖЬ
  • is_front_page возвращает TRUE

С вашей статической домашней страницей проблем нет: is_front_page возвращает true.

3. Статическая страница блога

На одной из ваших страниц перечислены все ваши сообщения.

  • URL-адрес: site.com/имя_страницы.
  • is_home: ИСТИНА
  • is_front_page: ЛОЖЬ

Здесь у вас могут возникнуть некоторые проблемы: is_home возвращает TRUE, но это не ваша домашняя страница: это страница WordPress, на которой перечислены все сообщения, как это было бы в архиве основной категории.

Используйте условные теги

Когда вы создаете плагин или тему, вы должны учитывать, что пользователи могут использовать эти настройки страницы. Итак, каждый раз, когда вы используете is_home, вам всегда следует предварительно протестировать is_front_page и всегда использовать для этого условные параметры.

Если вы этого не сделаете, у вас могут возникнуть проблемы с некоторыми пользователями. Например, если вы тестируете is_home только для отображения содержимого вашей домашней страницы, возникнут проблемы со статической домашней страницей, которая не будет отображать правильное содержимое.

Вот как это сделать правильно:

if ( is_front_page() && is_home() ) {

	// Default homepage ( both the front page and the recent posts page)

} elseif ( is_front_page() ) {

	// Static homepage

} elseif ( is_home() ) {

	// Blog page

} else {

	// Everything else

}

Это единственный (правильный) способ отображать или изменять содержимое вашей домашней страницы и страницы блога.

Важно. Обратите внимание, что эти функции работают только после загрузки WordPress, например, с файлами шаблонов или определенными перехватчиками действий. Вы не можете просто загрузить эти условия в файл function.php и ожидать, что они сработают.

А ты?

Вы уже столкнулись с этой проблемой? Каким было ваше решение? Я хочу об этом услышать!