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

23

Ich sehe den folgenden Code häufig in index.php-Dateien. Ich verstehe, dass is_front_page()beim Anzeigen der Startseite der Website (unabhängig davon, ob der Blogpost-Index oder eine statische Seite is_home()angezeigt wird ) true zurückgegeben wird , während beim Anzeigen des Blogpost- Index (unabhängig davon, ob er auf der Startseite oder einer statischen Seite angezeigt wird ) true zurückgegeben wird. Ich bin immer noch etwas ratlos über die Verwendung des folgenden Codes -

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

Jede Erklärung, warum dieser Code so beliebt ist, wird sehr geschätzt.

olliew
quelle

Antworten:

15

Dies zeigt den Titel der Seite an, wenn eine statische Seite so eingestellt ist, dass Beiträge angezeigt werden .

Z.B

Ich zeige Beiträge auf meiner Homepage ... Es wird nichts tun.

Wenn ich beispielsweise Posts auf der Seite " News " zeige ... werden die News in H1 angezeigt.

Dies wird verwendet, damit der Titel der Seite angezeigt wird, wenn Beiträge auf einer Seite angezeigt werden, jedoch nicht, wenn Blog-Beiträge auf der Startseite angezeigt werden.

Wir tun dies, weil auf der Startseite der Titel des ersten Beitrags angezeigt wird, sodass er zweimal angezeigt wird (einmal oben im ersten Halbjahr und erneut, wenn Beiträge durchlaufen werden).

Schande
quelle
Vielen Dank, Shramee. Ich habe den Titel meiner Blog-Indexseite in einem <h1> gefunden, als ich versucht habe, es herauszufinden, aber er erscheint nirgendwo. Ich denke, einige Themes verwenden es nur, um Menschen zu helfen, die Screenreader verwenden, und verstecken dann den eigentlichen Text, was für Neulinge etwas verwirrend ist, wenn er nicht kommentiert / dokumentiert ist.
olliew
Nun ... Es ist hilfreich zu wissen, in welchem ​​Kontext Posts verwendet werden (wie im obigen Beispiel für News), aber hauptsächlich für SEO . H1 spielt eine große Rolle, um Such-Bots dabei zu helfen, den Seiteninhalt besser zu verstehen.
Shramee
26

So machen Sie es richtig:

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

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

} elseif ( is_home()){

// Blog page

} else {

// Everything else

}

Dies ist die einzige (richtige) Möglichkeit, Inhalte mit Ihrer Homepage und Ihrer Blog-Seite anzuzeigen oder zu ändern.

Md. Abunaser Khan
quelle
4

Ich bin mir nicht sicher, ob "populär" ist, das scheint mir nicht so zu sein (aber dann schaue ich mir nicht so viele Themen an).

Sie scheinen genau zu verstehen, was jede Bedingung tut, daher sollte dies für Sie nicht verwirrend sein. Dies kombiniert Bedingungen zu überprüfen , dass Blog - Index angezeigt wird und es ist nicht auf der Titelseite.

Ah, der Grund für single_post_title()meine Vermutung ist, dass der Titel für $wp_query->queried object(durch Hauptabfrage als aktueller Kontext eingerichtet) und nicht $postglobal (durch iterierende Schleife eingerichtet) angezeigt wird.

In einigen Fällen sind diese identisch, in solchen Fällen jedoch nicht, wenn eine Zustandsprüfung durchgeführt wird. Die Schleife enthält Beiträge , aber das abgefragte Objekt ist eine Seite (es sei denn, ich vermische die Dinge :).

Rarst
quelle
Ich habe in letzter Zeit viele Vorlagen durchgesehen und es ist sehr verbreitet. Sie haben Recht, dass ich verstehe, was die Schleife tut. Ich verstehe nur nicht, warum die Leute sich dafür entscheiden, es auf diese bestimmte Weise zu tun. Warum sollte single_post_title anstelle von the_title () verwendet werden?
olliew