Bestimmen Sie, ob Seite die Posts-Seite ist


18

Auf der Lese Einstellungen Seite können Sie eine „Front Page“ und „Beiträge Seite“ gesetzt. Sie können überprüfen, ob die aktuelle Seiteis_front_page();

Gibt es eine ähnliche Funktion für die "Posts Page". Mir ist aufgefallen, dass is_page();das für diese spezielle Seite nicht funktioniert.

Vielen Dank

Antworten:


34

is_home() sucht trotz des etwas verwirrenden Funktionsnamens nach der "Posts Page".


danke, ich dachte, ich habe sie alle überprüft, aber ich denke nicht ...
Mike

3
Was ist $wp_query->is_posts_page?
Weston Ruter

@WestonRuter hat die richtige Antwort auf die Frage.
Der J

6

Wordpress wird mit 7 primären Vorlagenseitentypen geliefert, die auf diese Weise bestimmt werden können

if ( is_main_query() ) {
    // Error
    if ( is_404() ) {
        ;
    }
    // Front page
    if ( is_front_page() ) {
        ;
    }
    // Archive
    if ( is_archive() ) {
        ;
    }
    // Comments popup
    if ( is_comments_popup() ) {
        ;
    }
    // Search
    if ( is_search() ) {
        ;
    }
    // Singular
    if ( is_singular() ) {
        ;
    }
    // Home - the blog page
    if ( is_home() ) {
        ;
    }
}

is_home sagt dir, dass du die Blog-Seite hast.


1

"Posts page" ist normalerweise ein Archiv von:

  • Beiträge einer Kategorie
  • Beiträge eines Tags
  • Beiträge eines Datums (Jahr, Monat ...)
  • Beiträge des Hauptarchivs

Jedes dieser Tags kann mit einem der vielen bedingten Tags wie " is_category() is_tag() is_date() is_archive() And so many more" überprüft werden . Zum besseren Verständnis lesen Sie den Codex http://codex.wordpress.org/Conditional_Tags


0

Überprüfen Sie zuerst die Blog-bezogenen Dinge wie Autor, Tag, Beitragstyp

function is_blog () {
        global  $post;
        $posttype = get_post_type($post );
        return ( ((is_archive()) || (is_author()) || (is_category()) || (is_home()) || (is_single()) || (is_tag())) && ( $posttype == 'post')  ) ? true : false ;
  }

Überprüfen Sie nun, und geben Sie etwas zurück, das Sie haben möchten

function check_post_type(){
    $postType;
    if (is_blog())
      {
         $postType = 'I am post';
      } else
       {
          $postType = 'I am page';
       };
    return $postType;
  }

Benutze es wie Boss <?php echo check_post_type();?>

Vielen Dank an Wes Bos


0

TL; DR

Fall A . Es ist nicht erforderlich, dies in der Hauptvorlagendatei (index.php) zu bestimmen, da dies die Standardvorlage für diese Datei ist [1] .

Fall B . Um es in einer Seitenvorlage (zB page.php) zu ermitteln, überprüfen Sie es einfach wie folgt:

get_option( 'page_for_posts' ) == get_the_ID()

Einzelheiten

Ich habe buchstäblich den Quellcode [2] herausgesucht , um zu wissen, wie WordPress den Wert überprüft. Es stellt sich heraus, dass es die Anweisung verwendet get_option( 'page_for_posts' ), um die Beitrags-ID des ausgewählten Werts der Seite "Beiträge" zu ermitteln .

Also ja, für diesen Zweck gibt es keine solche offizielle Prüffunktion, die ähnlich ist is_front_page().

Solange Sie die ID der Seite kennen, die Sie ausgewählt haben, können Sie sie für den Überprüfungsprozess verwenden.

Verweise

  1. WordPress Codex, Theme-Entwicklung, codex.wordpress.org/Theme_Development

  2. Quellcode der EinstellungenEinstellungen lesen , github.com/WordPress/.../wp-admin/options-reading.php

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.