Wie ändere ich den Standardposttyp über die Schleife?

Ich möchte einige Arten von Beiträgen in die Standardabfrage aufnehmen. Wenn die Schleife beginnt:

if ( have_posts() ) : // Start the Loop. while ( have_posts() ) : the_post(); 

Der Standardposttyp ist 'post' , so dass andere Arten von Posts nicht in die Schleife gelangen (zB habe ich einen benutzerdefinierten Posttyp namens 'news' ).

Ich könnte das WP-Abfrageobjekt verwenden und tun:

  $type = 'news'; $args = array ('post_type' => $type); $temp = $wp_query; // assign ordinal query to temp variable for later use $wp_query = null; $wp_query = new WP_Query($args); while ( $wp_query->have_posts() ) : $wp_query->the_post(); 

Und das wird funktionieren. Aber gibt es eine Möglichkeit, andere Arten von Beiträgen einfach an das Hauptabfrageobjekt zu geben, um sich nicht darum zu kümmern, die Schleife überall zu ändern?

Bearbeiten:

Ich habe auch mit pre_get_posts ohne Erfolg versucht:

 // Load Home Page Posts( reviews and news ) function search_home_posts( $query ) { if( $query->is_home() && $query->is_main_query() && !is_admin() ) { $query->set( 'post_type', array( 'reviews', 'news' ) ); } } add_action( 'pre_get_posts', 'search_home_posts' ); 

macht aber nichts. Ich habe mehr Kombinationen ausprobiert wie $query->set( 'post_type', 'reviews' ); , aber das gleiche Verhalten. Irgendeine Idee?

Solutions Collecting From Web of "Wie ändere ich den Standardposttyp über die Schleife?"

Sie sollten den pre_get_posts , mit dem Sie eine (oder mehrere) Abfrage genau anvisieren und ändern können, so dass alles korrekt funktioniert (was selten das Ergebnis der Manipulation der Hauptabfrage in der Vorlage ist, besonders bei der Paginierung).

Du könntest das benutzen:

 $query = new WP_Query( 'post_type=any' ); 

Ruft alle Typen außer Revisionen und Typen ab, wobei ‘exclude_from_search’ auf TRUE gesetzt ist

Quelle