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


24

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.

Odpowiedzi:


15

Spowoduje to wyświetlenie tytułu strony, gdy strona statyczna jest ustawiona na wyświetlanie postów.

Na przykład

Wyświetlam posty na mojej stronie głównej ... Nic to nie da.

Jeśli, powiedzmy, pokażę posty na stronie zatytułowane Wiadomości ... Pokażę wiadomości w pierwszej połowie.

Służy to do wyświetlania tytułu strony za każdym razem, gdy posty są wyświetlane na stronie, ale nic, gdy posty blogu są wyświetlane na stronie głównej (stronie głównej).

Robimy to, ponieważ jeśli jest na stronie głównej ... wyświetli tytuł pierwszego postu, dzięki czemu pojawi się dwa razy (raz na górze w H1 i ponownie, gdy posty zostaną zapętlone).


Dziękuję Shramee. Znalazłem tytuł mojej strony indeksu blogu w <h1>, próbując ją rozgryźć, ale tak naprawdę nigdzie się nie pojawia. Myślę, że niektórzy użytkownicy używają go tylko po to, aby pomóc ludziom korzystającym z czytników ekranu, a następnie ukryć rzeczywisty tekst, co jest nieco mylące dla początkujących, jeśli nie jest ono komentowane / dokumentowane.
olliew 23.04.16

Cóż ... Pomaga wiedzieć, w jakich kontekstach są używane posty (jak w powyższym przykładzie wiadomości), ale głównie w przypadku SEO , H1 odgrywa dużą rolę, pomagając robotom wyszukiwarek lepiej zrozumieć treść strony.
Shramee

27

Oto jak zrobić to dobrze:

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

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

} elseif ( is_home()){

// Blog page

} else {

// Everything else

}

Jest to jedyny (właściwy) sposób wyświetlania lub modyfikowania treści na stronie głównej i na blogu.


4

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 $postglobalny (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 :).


Ostatnio przeglądałem mnóstwo szablonów i jest to bardzo częste. Masz rację, że rozumiem, co robi pętla, po prostu nie rozumiem, dlaczego ludzie zdecydowali się to zrobić w ten konkretny sposób. Dlaczego warto używać single_post_title zamiast the_title ()?
olliew
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.