web-dev-qa-db-de.com

Bestimmen Sie, ob es sich bei der Seite um die Posts-Seite handelt

Auf der Seite Leseeinstellungen können Sie eine "Startseite" und eine "Beitragsseite" festlegen. Sie können überprüfen, ob die aktuelle Seite is_front_page();

Gibt es eine ähnliche Funktion für die "Posts Page". Ich habe festgestellt, dass is_page(); für diese spezielle Seite nicht funktioniert.

Vielen Dank

16
mike

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

30
goldenapples

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.

5
D.A.H

"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() und vielen weiteren überprüft werden. Zum besseren Verständnis lesen Sie den Codex http://codex.wordpress.org/Conditional_Tags

1
Bainternet

Ü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();?>

Dank an Wes Bos

0
Hidayt Rahman

TL; DR

Fall A . Es ist nicht erforderlich, dies in der Hauptvorlagendatei (index.php) zu bestimmen, da dies die Standardvorlage dafür 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 ging buchstäblich den Quellcode ausgraben[2] nur um zu wissen, wie WordPress den Wert überprüft. Es stellt sich heraus, dass es die Anweisung get_option( 'page_for_posts' ) verwendet, 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 is_front_page() ähnelt.

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

Verweise

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

  2. Quellcode von Einstellungen Leseeinstellungen , github.com/WordPress/.../wp-admin/options-reading.php