Wie kann ich die Tax-Abfrage für die Hauptschleife für Taxonomie-Archive ändern?

Ich versuche ein Argument in der Steuerabfrage im Hauptobjekt WP_QUERY zu ändern, um die Archivansicht für mein Archiv meiner hierarchischen Taxonomie zu erstellen. Mein Ziel ist es, eines der Argumente in der Steueranfrage zu ändern, während der Rest intakt bleibt.

Ich habe versucht, die aktuelle Abfrage zu erhalten, modifiziere das tax_query-Array und gebe es dann an set weiter.

add_action( 'pre_get_posts', 'slug_cpt_category_archives' ); function slug_cpt_category_archives( $query ) { if ( is_tax( 'TAXONOMY NAME') ) { $tax_query = $query->tax_query->queries; $tax_query['include_children'] = 0; $query->set( 'tax_query', $tax_query ); } } 

Nicht nur, dass ich nicht den gewünschten Effekt habe, keine Kinderbegriffe einzubeziehen, wenn ich diese Aktion hinzufüge:

 add_action( 'wp_head', 'preh' ); function preh( ) { global $wp_query; print_r( $wp_query->tax_query ); } 

Ich sehe, dass es jetzt zwei tax_queries gibt und beide haben [include_children] => 1

Solutions Collecting From Web of "Wie kann ich die Tax-Abfrage für die Hauptschleife für Taxonomie-Archive ändern?"

@ Birgire Antwort ist in Ordnung (+1 von mir), aber $query->tax_query->queries können mehr als eine Taxonomie enthalten, und $query->tax_query->queries[0] kann die Abfrage für eine andere Taxonomie sein.

Wenn Sie also 'include_children' auf “false” (beachten Sie, dass es sich um ein boolesches Argument handelt) für die Taxonomie “TAXONOMY NAME” setzen, sollten Sie sicher sein, dass Sie die richtige Taxonomie anwenden:

 add_action( 'pre_get_posts', 'slug_cpt_category_archives' ); function slug_cpt_category_archives( $query ) { if ( is_tax( 'TAXONOMY NAME' ) ) { foreach ( $query->tax_query->queries as $i => $tax_query ) { if ( $tax_query['taxonomy'] === 'TAXONOMY NAME' ) { $query->tax_query->queries[$i]['include_children'] = false; // if you want to set 'include_children' to false for all // taxonomies than remove following return return; } } } } 

Bitte versuche folgendes:

 add_action( 'pre_get_posts', function( $query) { if( is_tax( 'TAXONOMY NAME') && isset( $query->tax_query->queries[0]['include_children'] ) ) $query->tax_query->queries[0]['include_children'] = 0; });