Ich versuche, das $wp_query
Objekt für eine bestimmte Kategorie zu ersetzen, ohne sich damit befassen zu müssen, eine neue Vorlage zu erstellen und dort ein neues WP_Query
Objekt zu WP_Query
.
Mein Ziel ist es, die für The Loop verfügbaren Daten vom Standard für diese Anfrage zu einer benutzerdefinierten Abfrage zu ändern.
add_filter( 'pre_get_posts', 'custom_wpquery' ); function custom_wpquery( $query ){ global $wp_query; if (is_category(121)) { if ($wp_query === $query) { $query = new WP_Query('page_id=146'); $query->set('page_id', 146); } } return $query; };
Das scheint The Loop überhaupt nicht zu beeinflussen, was mache ich falsch?
Das scheint zu funktionieren, aber ich wäre daran interessiert, von anderen zu hören, ob es der “richtige” Weg ist, um diese Art von Override zu erreichen. Ich gehe davon aus, dass Sie eine Kategorie-Archivseite wie http://www.example.com/category/computers/ besuchen.
// landing page = 188 // category = "computers" (#8) function custom_wpquery( $query ){ // the main query global $wp_the_query; if ( 'computers' === $query->get( 'category_name' ) ) { if ( $wp_the_query === $query) { // reset and override the active query $query->init(); $query->query( 'page_id=188' ); } } }; add_filter( 'pre_get_posts', 'custom_wpquery' );
Dies sollte $query->is_archive
wahrscheinlich ebenfalls testen.