zeige Beiträge mit demselben Taxonomiebegriff an

Ich versuche, 5 verwandte Beiträge in der Schleife anzuzeigen, wobei diese verwandten Beiträge Beiträge mit demselben Taxonomiewert sind. Ich habe zum Beispiel eine benutzerdefinierte Taxonomie eingerichtet, die venues so dass jedem Beitrag ein Wert für die venue zugewiesen wird. Daher möchte ich in jedem Beitrag 5 weitere Beiträge anzeigen, die denselben Taxonomiewert haben (dh am selben Veranstaltungsort).
Der Code, den ich bisher habe, funktioniert nicht ganz richtig:

   'listings', 'posts_per_page' => 5, 'tax_query' => array( array( 'taxonomy' => 'venues', 'field' => 'slug', 'terms' => $custom_term->slug, ), ), ); $loop = new WP_Query($args); if($loop->have_posts()) { while($loop->have_posts()) : $loop->the_post(); ?> 

Es werden 5 Posts erfolgreich angezeigt, aber es sind nur fünf Posts vom selben Post-Typ und nicht 5 Posts mit demselben Taxonomie-Wert in der Schleife. Irgendwelche Vorschläge würden sehr geschätzt werden!

Solutions Collecting From Web of "zeige Beiträge mit demselben Taxonomiebegriff an"

Völlig ungetestet und ich bin mir nicht 100% sicher, dass ich deine Frage verstehe, aber das sollte (theoretisch) 5 Beiträge bekommen, die einen der gleichen Orte wie der aktuelle Beitrag teilen. Ich würde vorschlagen, dass Sie einige Transienten hinzufügen, damit Sie nicht ständig Abfragen ausführen.

Wenn es nicht funktioniert, vermute ich, dass die Syntax meiner Steueranfrage ein wenig ausfällt. Es bekommt mich immer, weil es ein Array von Arrays ist.

 //get the post's venues $custom_terms = get_terms('venues'); if( $custom_terms ){ // going to hold our tax_query params $tax_query = array(); // add the relation parameter (not sure if it causes trouble if only 1 term so what the heck) if( count( $custom_terms > 1 ) ) $tax_query['relation'] = 'OR' ; // loop through venus and build a tax query foreach( $custom_terms as $custom_term ) { $tax_query[] = array( 'taxonomy' => 'venues', 'field' => 'slug', 'terms' => $custom_term->slug, ); } // put all the WP_Query args together $args = array( 'post_type' => 'listings', 'posts_per_page' => 5, 'tax_query' = $tax_query ); // finally run the query $loop = new WP_Query($args); if( $loop->have_posts() ) { while( $loop->have_posts() ) : $loop->the_post(); ?> 
< ?php the_title(); ?>
< ?php endwhile; } wp_reset_query();?> }

Vielen Dank für die gute Lösung, aber das wird Ihnen Beiträge mit irgendeinem Begriff in derselben Taxonomie bringen. Aber wenn Sie nur diejenigen wollen, die die gleichen Bedingungen mit dem aktuellen Beitrag haben, müssen Sie den Code so ändern. Dieser ist getestet und sollte funktionieren.

  < ?php //get the post's venues $custom_terms = wp_get_post_terms($post->ID, 'venues'); if( $custom_terms ){ // going to hold our tax_query params $tax_query = array(); // add the relation parameter (not sure if it causes trouble if only 1 term so what the heck) if( count( $custom_terms > 1 ) ) $tax_query['relation'] = 'OR' ; // loop through venus and build a tax query foreach( $custom_terms as $custom_term ) { $tax_query[] = array( 'taxonomy' => 'venues', 'field' => 'slug', 'terms' => $custom_term->slug, ); } // put all the WP_Query args together $args = array( 'post_type' => 'listings', 'posts_per_page' => 5, 'tax_query' => $tax_query ); // finally run the query $loop = new WP_Query($args); if( $loop->have_posts() ) { while( $loop->have_posts() ) : $loop->the_post(); ?> 
< ?php the_title(); ?>
< ?php endwhile; } wp_reset_query(); }?>