if (is_home () &&! is_front_page ())


24

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

<?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; ?>

Будь-яке роз'яснення, чому цей фрагмент коду настільки популярний, дуже цінується.

Відповіді:


15

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

Напр

Я показую публікації на своїй домашній сторінці ... Це нічого не дасть.

Якщо я, скажімо, показуватиму повідомлення на сторінці під назвою Новини ... Він показуватиме Новини в першій половині.

Це використовується так, щоб заголовок сторінки відображався щоразу, коли повідомлення відображаються на сторінці, але нічого, коли повідомлення на блозі відображаються на головній сторінці (домашня сторінка).

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


Дякую, Шрамі. Я знайшов заголовок моєї сторінки покажчика блогу в <h1> при спробі розібратися, але насправді він ніде не з’являється. Я думаю, що деякі тематики використовують його лише для того, щоб допомогти людям, які користуються зчитувачами екрану, а потім приховати власне текст, який трохи заплутаний для новачків, якщо його не коментують / задокументують.
olliew

Ну ... Це допомагає дізнатись, у яких контекстних публікаціях використовуються (як у наведеному вище прикладі для Новин), але це, головним чином, для SEO , H1 відіграє велику роль, щоб пошукові роботи краще зрозуміли вміст сторінки.
shramee

27

Ось як це зробити правильно:

if ( is_front_page() && is_home() ) {
// Default homepage

} elseif ( is_front_page()){
// Static homepage

} elseif ( is_home()){

// Blog page

} else {

// Everything else

}

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


4

Я не впевнений у "популярному", мені це не здається (але тоді я не розглядаю так багато тем).

Ви ніби добре розумієте, що робить кожен умовний, тому це не повинно вас бентежити. Це поєднує умови для перевірки того, що показник блогу відображається та чи не на головній сторінці.

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

За деяких обставин це буде однаково, але не в такому випадку, як перевірка стану. Цикл міститиме повідомлення , але запитуваним об'єктом буде сторінка (якщо я не змішую речі :).


Я нещодавно переглядав безліч шаблонів, і це дуже часто. Ти маєш рацію, що я розумію, що робить цикл, я просто не розумію, чому люди вирішили зробити це саме таким чином. Навіщо використовувати single_post_title, а не the_title ()?
olliew
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.