Überprüfen Sie, ob es sich bei der aktuellen Seite um die Blog-Seite handelt


33

Ich bin neu in WordPress. Ich suche nach einer Möglichkeit, um zu überprüfen, ob die aktuelle Seite die Blog-Seite im Code der Header-Datei ist.

Ich habe nachgesehen, aber ich kann keinen Weg finden. Helfen Sie mir bitte.

Antworten:


42

Wenn Sie mit " Blog-Seite " eine statische Seite gemeint haben, die in den Leseeinstellungen als Posts-Seite festgelegt wurde , können Sie dies folgendermaßen überprüfen:

if ( is_front_page() && is_home() ) {
  // Default homepage
} elseif ( is_front_page() ) {
  // static homepage
} elseif ( is_home() ) {
  // blog page
} else {
  //everyting else
}

Wenn Sie is_home()und verwenden is_front_page(), müssen Sie diese in der richtigen Reihenfolge verwenden , um Fehler zu vermeiden und jede Benutzerkonfiguration zu testen.

(Quelle: Bedingte Tags - Die Blog-Seite )

Oder einfach:

if ( !is_front_page() && is_home() ) {
  // blog page
}

Oder einfacher (nehme ich an):

if ( is_home() ) {
  // blog page
}

Ein Anwendungsfall if ( !is_front_page() && is_home() ), der meiner Meinung nach verwendet werden sollte, ist, wenn Sie ein Thema verteilen, dessen Layout für die Standard-Homepage und die Blog-Seite unterschiedlich ist .
Giraldi

Ich finde, dass is_front_page () true zurückgibt, unabhängig davon, ob das Blog-Archiv oder eine Seite ausgewählt ist. Benötigen Sie eine Bestätigung. codex.wordpress.org/Function_Reference/is_front_page
atwellpub

19

Sie können in Ihrer Datei themes functions.php Folgendes verwenden:

function is_blog () {
    return ( is_archive() || is_author() || is_category() || is_home() || is_single() || is_tag()) && 'post' == get_post_type();
}

Und fügen Sie dies dann in die Datei ein, die Sie überprüfen:

<?php if (is_blog()) { echo 'You are on a blog page'; } ?>

Sie können Hooks in Ihrer functions.php-Datei verwenden, um die oben genannten Hooks zu erstellen, damit sie auf jeder Seite angezeigt werden.


1
Dies ist eine gute Antwort, wenn Sie feststellen möchten, ob Sie sich auf einer Blog-Seite befinden, aber nicht unbedingt auf der Blog-Seite (wie auf der Blog-Homepage). Siehe @ Giraldis Antwort dafür.
Tim Malone

Ich habe fälschlicherweise angenommen, dass is_blog () existiert, weil is_page () existiert. Es ist mir nicht in den Sinn gekommen, den offiziellen WordPress Conditional Tags Index zu konsultieren . Ich konnte diese Lösung mithilfe des Widget Logic-Plugins effektiv anwenden.
Clarus Dignus

11

Wenn mit "Blog-Seite" eine statische Seite gemeint ist, die als Beitragsseite in der Lesung festgelegt wurde:

global $wp_query;

if ( isset( $wp_query ) && (bool) $wp_query->is_posts_page ) {
    //static blog page
}

PS. Diese Lösung funktioniert auch mit der Aktion template_redirect


Hi repinsa, willkommen bei WPSE :) Danke, dass du deine Antwort hinzugefügt hast. Es wurde ein bisschen runtergestimmt, wahrscheinlich, weil es einen Syntaxfehler im Code hat (es fehlt ein Semikolon nach dem global $wp_query), aber auch, weil es die Frage nicht vollständig beantwortet. Es ist eine Funktion, aber das OP hat gefragt, wie das in seiner Header-Datei zu klären ist - daher ist möglicherweise eine genauere Erläuterung erforderlich, was wo abgelegt werden soll. Nochmals herzlich willkommen, ich freue mich, Sie hier zu haben!
Tim Malone

2
Das ist eigentlich die einzig gute Antwort hier, hätte mehr Gegenstimmen haben sollen.
Lacho Tomov

2

Um die Blog-Indexseite zu erhalten , habe ich das gefunden

if ( !is_front_page() && is_home() ) {
  // blog page
}

funktioniert bei mir nicht, ich musste die Funktion get_option ('page_for_posts') verwenden, um die Blog-Seite post_id zu identifizieren. Meine Antwort lautet

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

    if ( empty ( $post_id) ) {
        global $post;
        $post_id =  get_option( 'page_for_posts' );
    }

    //blog page
}

0

Es gibt eine knifflige Methode.

http://example.com/blog

Angenommen blog, Sie können diesen Code verwenden, wenn es sich bei Ihrer Blog-Seiten-Slug handelt .

global $wp_query;
if($wp_query->query['pagename']=='blog'){
// this is blog page
}

0

STARTSEITE

if(is_home() && is_front_page() || is_front_page()): // static or default hompage
 ...
endif;

BLOG

if(is_home() && !is_front_page()): // blog
 ...
endif;

0

Ich denke, es ist sehr einfach, dass ich mich in der gleichen Situation befand und die folgende Technik verwendete, nämlich den Seiten-Slug zu verwenden.

if( is_page('blog') ) {
echo "This is your blog page"; 
}

Stellen Sie jedoch sicher, dass Sie nicht Homepage ausgewählt haben, um die neuesten Blog-Beiträge anzuzeigen, und dass Sie eine bestimmte Seite für Blogs wie Blogs oder Nachrichten usw. eingerichtet haben.


0

Sie können verwenden ..

<?php if ( is_single() ) { ?>

Do stuff here

<?php } ?>

um zu überprüfen, ob es sich um einen einzelnen Blogeintrag handelt. Oder...

<?php if ( is_home() ) { ?>

Do stuff here

<?php } ?>

um zu überprüfen, ob es sich um die Blog-Homepage handelt


2
Funktioniert nicht, wenn Sie die Blog-Seite geändert haben
cdmckay

Dies liefert keine korrekte Antwort auf das OP. Dies zeigt an, dass Sie sich in einem einzelnen Beitrag befinden, nicht in der Blog-Seite.
Butlerblog

-1

Ich benutze diesen Weg

// Get body classes as array
$body_classes = get_body_class();
// Check if "blog" class exists in the array
if(in_array("blog", $body_classes)) {
   // Do stuff
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.