Mehrere wp_query auf der Archivseite

In meinem Archiv habe ich eine typische Schleife

if ( have_posts() ) : /* Start the Loop */ while ( have_posts() ) : the_post(); get_template_part( 'template-parts/content', get_post_format() ); endwhile; wp_reset_postdata(); else : get_template_part( 'template-parts/content', 'none' ); endif; 

Und in meiner Sidebar habe ich ein Plugin-Widget, das auch neue wp_query aufruft, um die letzten Posts anzuzeigen.

 $query = new WP_Query( apply_filters( 'widget_posts_args', array( 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true ) ) ); 

So weit, ist es gut. Aber dann muss ich Filter für meine Kategorien hinzufügen, um anzuzeigen und benutzerdefinierte Beitragstypen:

 function mvp_add_custom_types( $query ) { if( is_category() || is_tag() || is_date() && empty( $query->query_vars['suppress_filters'] ) ) { $query->set( 'post_type', array( 'post', 'nav_menu_item', 'mvp_projects' )); return $query; } } add_filter( 'pre_get_posts', 'mvp_add_custom_types' ); 

Was plötzlich beginnt die andere Frage zu brechen. Wie kann ich diese beiden Abfragen verwenden, wenn der Filter nur auf das Thema angewendet wird (die andere Abfrage stammt von einem Plugin)?

Solutions Collecting From Web of "Mehrere wp_query auf der Archivseite"

Ich bin mir nicht ganz sicher, aber es sieht so aus, als ob Sie in Ihrem Filter eine weitere Bedingung benötigen. Derzeit werden alle Inhalte nach Kategorie, Tag oder Datum gefiltert, für die die Abfragevariable nav_menu_item, mvp_projecvts nicht für Post-Typen festgelegt wurde. Vielleicht könnten Sie einen Filter hinzufügen, um zu prüfen, ob eine Variable gesetzt ist, und nur filtern, wenn die Variable existiert.

$ archive_ok = true; dann in deinem Filter: if ($ archive_ok) {tu stuff} $ archive_ok = false;

Es ist eine klobige Lösung und ich bin mir sicher, dass es bessere Antworten gibt, aber es könnte im Notfall funktionieren.

Ich habe das sortiert, indem ich zusätzliche Statements und verpackte OR-statementen in Klammern hinzugefügt habe:

 function mvp_add_custom_types( $query ) { if( ( is_category() || is_tag() || is_date() ) && $query->is_main_query() && empty( $query->query_vars['suppress_filters'] ) ) { $query->set( 'post_type', array( 'post', 'nav_menu_item', 'mvp_projects' )); return $query; } } add_filter( 'pre_get_posts', 'mvp_add_custom_types' );