Często widzę następujący kod w plikach index.php. Rozumiem, że is_front_page()
zwraca true podczas przeglądania strony głównej witryny (niezależnie od tego, czy wyświetla indeks postów na blogu, czy stronę statyczną), a is_home()
zwraca true podczas przeglądania indeksu postów na blogu (niezależnie od tego, czy wyświetla się na stronie głównej, czy na stronie statycznej). Nadal jestem nieco zakłopotany użyciem następującego kodu -
<?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; ?>
Wszelkie wyjaśnienie, dlaczego ten fragment kodu jest tak popularny, jest bardzo mile widziane.
Oto jak zrobić to dobrze:
Jest to jedyny (właściwy) sposób wyświetlania lub modyfikowania treści na stronie głównej i na blogu.
źródło
Nie jestem pewien co do „popularności”, nie wydaje mi się to (ale wtedy nie patrzę na tak wiele tematów).
Wydaje się, że dobrze rozumiesz, co robi każdy warunek, więc nie powinno to być dla ciebie mylące. Łączy to warunki sprawdzania, czy indeks blogu jest wyświetlany i czy nie ma go na pierwszej stronie.
Ach, powodem
single_post_title()
wydaje mi się, że wyświetla tytuł$wp_query->queried object
(ustawiony przez zapytanie główne jako bieżący kontekst), a nie$post
globalny (ustawiony przez pętlę iteracyjną).W niektórych okolicznościach będą one takie same, ale nie w takim przypadku, jak w przypadku sprawdzania stanu. Pętla będzie zawierać posty , ale obiektem zapytania będzie strona (chyba że pomieszam rzeczy :).
źródło