Anzeigen verwandter Posts in einem benutzerdefinierten Posttyp durch eine benutzerdefinierte Taxonomie

Ich versuche, verwandte Beiträge nach einer benutzerdefinierten Taxonomie (product_tags) in einem benutzerdefinierten Beitragstyp (Produkte) anzuzeigen. Der folgende Code funktioniert, ignoriert jedoch posts_per_page .

Irgendwelche Ideen?

global $post; $terms = get_the_terms( $post->ID , 'product_tags', 'string'); $do_not_duplicate[] = $post->ID; if(!empty($terms)){ echo 'Related Products'; foreach ($terms as $term) { query_posts( array( 'post_type' => 'products', 'product_tags' => $term->slug, 'posts_per_page' => 3, 'ignore_sticky_posts' => 1, 'orderby' => 'rand', 'post__not_in' => $do_not_duplicate) ); if(have_posts()) { while ( have_posts() ) : the_post(); $do_not_duplicate[] = $post->ID; ?>  <?php endwhile; wp_reset_query(); } } } 

Solutions Collecting From Web of "Anzeigen verwandter Posts in einem benutzerdefinierten Posttyp durch eine benutzerdefinierte Taxonomie"

Wenn Sie mehrere Taxonomiebegriffe abfragen möchten, können Sie das erweiterte Argument tax_query von WP_Query-Abfragen verwenden. Zum Beispiel

 //Get array of terms $terms = get_the_terms( $post->ID , 'product_tags', 'string'); //Pluck out the IDs to get an array of IDS $term_ids = wp_list_pluck($terms,'term_id'); //Query posts with tax_query. Choose in 'IN' if want to query posts with any of the terms //Chose 'AND' if you want to query for posts with all terms $second_query = new WP_Query( array( 'post_type' => 'products', 'tax_query' => array( array( 'taxonomy' => 'product_tags', 'field' => 'id', 'terms' => $term_ids, 'operator'=> 'IN' //Or 'AND' or 'NOT IN' )), 'posts_per_page' => 3, 'ignore_sticky_posts' => 1, 'orderby' => 'rand', 'post__not_in'=>array($post->ID) ) ); //Loop through posts and display... if($second_query->have_posts()) { while ($second_query->have_posts() ) : $second_query->the_post(); ?>  < ?php endwhile; wp_reset_query(); } 

Hinweis: Dies scheint eine "sekundäre Schleife" zu sein, dh nicht die "Hauptschleife" (wo Posts / ein einzelner Post angezeigt werden). In diesem query_posts sollten Sie query_posts nicht verwenden. Sehen Sie diese ausgezeichnete Frage .

Dies ist wahrscheinlich nicht die richtige Lösung, aber ich würde anfangen, $term->slug :

 foreach ($terms as $term) { $termSlug = $term->slug; query_posts( array( 'post_type' => 'products', 'product_tags' => $termSlug, 'posts_per_page' => 3, ...