我想我做到了。因此,如果此代码错误或可以简化,请更正它。我想要5个产品结果。所以所有这些都应该来自product_tag
如果可用。如果不使用product_cat
. 所以我在这里组合了2个参数:
<?php
// get the custom post type\'s taxonomy terms
$related_tag = wp_get_object_terms( $post->ID, \'product_tag\', array(\'fields\' => \'ids\'));
$related_cat = wp_get_object_terms( $post->ID, \'product_cat\', array(\'fields\' => \'ids\'));
// arguments 1
$args1 = array(
\'post_type\' => \'product\',
\'post_status\' => \'publish\',
\'posts_per_page\' => 5,
\'orderby\' => \'\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'product_tag\',
\'field\' => \'id\',
\'terms\' => $related_tag,
),
),
\'post__not_in\' => array ($post->ID),
);
// arguments 2
$args2 = array(
\'post_type\' => \'product\',
\'post_status\' => \'publish\',
\'posts_per_page\' => 5,
\'orderby\' => \'rand\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'product_cat\',
\'field\' => \'id\',
\'terms\' => $related_cat,
),
),
\'post__not_in\' => array ($post->ID),
);
$related_items1 = new WP_Query( $args1 );
$related_items2 = new WP_Query( $args2 );
$related_items = new WP_Query();
$related_items->posts = array_merge( $related_items1->posts, $related_items2->posts );
$related_items3->post_count=5 - $related_items1->post_count;
$related_items->post_count = $related_items1->post_count + $related_items3->post_count;
// loop over query
if ($related_items->have_posts()) :
while ( $related_items->have_posts() ) : $related_items->the_post();
?>
<div class="related_item">
<div class="Related_image">
<a href="<?php the_permalink() ?>"><?php the_post_thumbnail(\'thumbnail\'); ?></a>
</div>
<div class="Related_title">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><h2>
</div>
</div>
<?php
endwhile;
endif;
// Reset Post Data
wp_reset_postdata();
?>