Bestimmen Sie, ob die ID eine Seite oder ein Post ist und fragen Sie die ID ab

Ich möchte eine SeitenID nachschlagen und feststellen, ob es sich um eine Seite oder einen Beitrag handelt. Dann frage diese ID ab und zeige Sachen wie Titel, vorgestellte Bilder usw. an.

Dies funktioniert für Seiten:

query_posts('page=' . $featured_tab); 

Das funktioniert oder Beiträge:

  query_posts('p=' . $featured_tab); 

Dies sagt mir, ob $ featured_tag ​​ein Post oder eine Seite ist:

  get_post_type( $featured_tab ) 

Aber das funktioniert nicht

  foreach ( $featarr as $featured_tab ) { if (get_post_type( $featured_tab ) == 'page') { $featured_tab_type = 'page='; } elseif (get_post_type( $featured_tab ) == 'post') { $featured_tab_type = 'p='; } query_posts($featured_tab_type . $featured_tab); while (have_posts()) : the_post(); Echo 'stuff here'; 

Das Problem, das ich habe, ist dies … Die Variable $ featured_tag ​​repräsentiert eine zugewiesene Seite / Post-ID, die auf einer Seite angezeigt wird.

Also gebe ich eine Reihe von IDs ein, dh 34,543,2432,355 … etc, nimm dann jede ID als $ featured_tab und frage nach Titel, vorgestellter Seite und Auszug.

Dann zeige ich alle Seiten- / Post-IDs in einer dreispaltigen Tabelle an.

Das funktioniert perfekt aber nur wenn ich nach dem einen oder dem anderen ab frage aber nicht beides wie ich es in der if-statement mache wenn post p = oder wenn page use page =.

Wenn ich die if-Bedingung nutze, wird es hier verrückte Ergebnisse geben, wenn es 9 IDs gibt, bekomme ich 50+ Ergebnisse … Duplikate und nur Posts werden keine Seite angezeigt.

Solutions Collecting From Web of "Bestimmen Sie, ob die ID eine Seite oder ein Post ist und fragen Sie die ID ab"

Sie müssen nicht bestimmen, um welchen Typ es sich handelt, Sie müssen nur die richtigen Argumente festlegen, um die Standardwerte zu überschreiben. Zunächst einmal verwenden wir WP_Query , um zusätzliche Abfragen anstelle von query_posts .

Wenn wir nur das Argument p , post_type standardmäßig auf post , so dass wir keine Seiten erhalten:

 $query = new WP_Query( array( 'p' => 13 ) ); 

Wenn wir nur post_type hinzufügen und auf einen any post_type setzen, erhalten wir die Post-ID 13, egal ob Post, Seite, Anhang usw.

 $query = new WP_Query( array( 'post_type' => 'any', 'p' => 13 ) ); 

Wenn Sie einige Post-IDs haben und alle abfragen müssen, können Sie die foreach-Schleife loswerden und mit dem post__in Argument eine einzige Abfrage für alle Posts auf einmal post__in :

 $query = new WP_Query( array( 'post_type' => 'any', 'post__in' => array( 1, 2, 13, 42 ) ) ); 

Ok, ich habe es herausgefunden:

 query_posts(array ( 'p' => $featured_tab, 'post_type' => array('post', 'page'), ) ); 

während $ featured_tab die ID ist, die Sie abfragen.