Значение сниппета "if ( is_home() && ! is_front_page() )"?

23 апр. 2016 г., 15:12:39
Просмотры: 219K
Голосов: 39

Я часто вижу следующий код в файлах index.php. Я понимаю, что is_front_page() возвращает true при просмотре главной страницы сайта (независимо от того, отображается ли индекс записей блога или статическая страница), в то время как is_home() возвращает true при просмотре индекса записей блога (независимо от того, отображается ли он на главной странице или на статической странице). Я все еще несколько озадачен использованием следующего кода -

<?php if ( have_posts() ) : ?>

    <?php if ( is_home() && ! is_front_page() ) : ?>
        <header>
            <h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
        </header>
    <?php endif; ?>

Буду признателен за любое объяснение, почему этот фрагмент кода так популярен.

1
Комментарии

Похожий вопрос: https://wordpress.stackexchange.com/questions/30385/when-to-use-is-home-vs-is-front-page

Jesse Nickles Jesse Nickles
24 дек. 2022 г. 12:38:54
Все ответы на вопрос 3
1
56

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

if ( is_front_page() && is_home() ) {
// Главная страница по умолчанию

} elseif ( is_front_page()){
// Статическая главная страница

} elseif ( is_home()){

// Страница блога

} else {

// Все остальные страницы

}

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

19 сент. 2016 г. 22:19:26
Комментарии

Так ли вы стилизуете разные страницы в WordPress? Например, на главной странице у меня может быть большое герой-изображение, а на страницах "О нас" и "Контакты" его может вообще не быть. Так ли вы подходите к созданию разных макетов для разных страниц?

user3660857 user3660857
23 февр. 2022 г. 04:45:13
2
21

Это отобразит заголовок страницы, когда для отображения записей выбрана статическая страница.

Пример:

Если записи отображаются на главной странице... Ничего не произойдет.

Если, например, записи отображаются на странице с заголовком Новости... Будет показан заголовок Новости в теге H1.

Это используется для того, чтобы заголовок страницы отображался, когда записи выводятся на отдельной странице, но не показывался, когда записи блога выводятся на главной странице.

Мы делаем так, потому что если это главная страница... будет отображаться заголовок первой записи, создавая двойное отображение (один раз вверху в H1 и снова при переборе записей).

23 апр. 2016 г. 16:03:58
Комментарии

Спасибо, Shramee. Я обнаружил заголовок индексной страницы своего блога в теге <h1>, пытаясь разобраться, но фактически он нигде не отображается. Думаю, некоторые разработчики тем используют его только для помощи людям с программами чтения с экрана, а затем скрывают сам текст, что может немного сбивать с толку новичков, если это не задокументировано или не прокомментировано.

olliew olliew
23 апр. 2016 г. 16:53:01

Ну... Это помогает понять контекст, в котором используются записи (как в примере выше для Новостей), но в основном он нужен для SEO — тег H1 играет важную роль в том, чтобы помочь поисковым ботам лучше понять содержание страницы.

shramee shramee
24 апр. 2016 г. 09:16:20
1

Я не уверен насчет "популярности", мне так не кажется (хотя я и не смотрю на такое количество тем).

Вы, кажется, хорошо понимаете, что делает каждое условие, так что это не должно вас смущать. Здесь условия объединяются, чтобы проверить, что отображается индекс блога и это не главная страница.

Ах, причина использования single_post_title(), я полагаю, в том, что она выводит заголовок для $wp_query->queried object (установленного основным запросом как текущий контекст), а не для глобальной переменной $post (установленной при итерации цикла).

В некоторых случаях они будут одинаковыми, но не в таком случае, как проверяет условие. Цикл будет содержать записи, но запрашиваемый объект будет страницей (если я ничего не путаю :).

23 апр. 2016 г. 15:32:43
Комментарии

Я недавно просмотрел множество шаблонов, и это очень распространено. Ты прав в том, что я понимаю, что делает цикл, но не понимаю, почему люди выбирают именно такой способ. Зачем использовать single_post_title вместо the_title()?

olliew olliew
23 апр. 2016 г. 16:28:35