Главная страница 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 и ожидать, что они сработают.
А ты?
Вы уже столкнулись с этой проблемой? Каким было ваше решение? Я хочу об этом услышать!