Benutzerdefinierte Taxonomieabfrage, die nach dem Upgrade auf 4.4 unterbrochen wurde

Ich habe gerade ein Upgrade von 4.2 auf 4.4 durchgeführt und jetzt ist meine Taxonomieabfrage leer. Es hat vor dem Upgrade gut funktioniert.

Ich habe eine benutzerdefinierte Taxonomie namens 'title' registriert, die von meinem benutzerdefinierten Posttyp 'sg-publications' . Im Anschluss an die WP-Template-Hierarchie habe ich eine Vorlage namens taxonomy-title.php die die standardmäßigen Abfrageargumente verwendet und bisher jede Publikation korrekt nach ihrem Titel angezeigt hat.

Hier ist die Ausgabe von $ queried_object und $ wp_query-> request in dieser Vorlage:

 [queried_object] => WP_Term Object ( [term_id] => 1256 [name] => Stroupe Scoop [slug] => stroupe-scoop [term_group] => 0 [term_taxonomy_id] => 1374 [taxonomy] => title [description] => [parent] => 0 [count] => 30 [filter] => raw ) [queried_object_id] => 1256 [request] => SELECT wp_posts.* FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND wp_posts.post_title = 'stroupe-scoop' AND ( wp_term_relationships.term_taxonomy_id IN (1374) ) AND wp_posts.post_type = 'sg-publications' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private' ) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC 

Das Problem, das ich in der obigen Abfrage sehe, ist direkt nach WHERE 1=1 , aus irgendeinem Grund sucht es nach post_title = 'stroupe-scoop' . Das ist nicht korrekt – das ist der Taxonomiebegriff Slug, nicht der Titel des Posts. In der Tat, wenn ich diese Zeile auskommentiere und sie gegen die database laufe, bekomme ich die richtigen Ergebnisse. Also, was verursacht WP, diese Bedingung hinzuzufügen, wenn (ich nehme an) es wurde nicht hinzugefügt, bevor ich auf 4.4 aktualisiert?

Hier ist Taxonomie-Titel.php:

 description; $tax_name = $quer_object->name; $tax_slug = $quer_object->slug; get_header(); get_sidebar(); $title = get_the_title( $ID ); $args = array( 'menu' => 'new-publications', 'container' => 'div', 'container_id' => $tax_slug . '-menu', 'menu_class' => 'menu-top-style nav nav-tab', 'menu_id' => '', 'echo' => true, 'fallback_cb' => false, 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'items_wrap' => '
    %3$s
', 'depth' => 0, 'walker' => '' ); ?>

<?php get_footer();

Und in functions.php habe ich diesen Abfragefilter:

 // use pre_get_posts to remove pagination from publications function gd_publications_pagination( $query ) { if ( is_admin() || ! $query->is_main_query() ) return; if ( is_tax('title') ) { // Display all posts for the taxonomy called 'title' $query->set( 'posts_per_page', -1 ); return; } } add_action( 'pre_get_posts', 'gd_publications_pagination', 1 ); 

Solutions Collecting From Web of "Benutzerdefinierte Taxonomieabfrage, die nach dem Upgrade auf 4.4 unterbrochen wurde"

Ich würde nicht empfehlen, einen Taxonomie-Slug zu verwenden, der mit den öffentlichen Abfragevariablen wie title übereinstimmt.

Die Variable für die Titelabfrage wurde in 4.4 eingeführt. Ich denke, das könnte Ihre Probleme erklären.

Überprüfen Sie diesen Teil der WP_Query class:

  if ( '' !== $q['title'] ) { $where .= $wpdb->prepare( " AND $wpdb->posts.post_title = %s", stripslashes( $q['title'] ) ); } 

Also wenn wir zum Beispiel benutzen:

 example.tld/?title=test 

Was sollte WordPress hier tun? Ist es eine Taxonomie-Abfrage oder Titelsuche?

Also würde ich empfehlen, die benutzerdefinierte Taxonomie Slug, z

 gary_title 

um mögliche Namenskollisionen zu vermeiden.

Aktualisieren:

Danke an @ ocean90 , dass es sich um einen Bug handelt, der in 4.4.1 behoben wird