I’m in the single product page of a product. I want to show, after this product, 4 other random products with the same category
All I have is this: (PHP)
<?php
global $product;
$terms = get_the_terms( $product->get_id(), 'product_cat' );
var_dump($terms);
$args = array(
'posts_per_page' => 4,
'orderby' => 'rand',
'post_type' => 'product' );
$random_products = get_posts( $args );
foreach ( $random_products as $post ) : setup_postdata( $post ); ?>
<li>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?></a>
</li>
<?php endforeach;
wp_reset_postdata();
?>Can any one help me? Thanks
Advertisement
Answer
You can try this way. I checked it’s worked:
global $product;
$terms = get_the_terms( $product->get_id(), 'product_cat' );
$first_term = array_shift( $terms );
$args = array(
'posts_per_page' => 4,
'orderby' => 'rand',
'post_type' => 'product',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( $first_term->slug )
)
),
'post__not_in' => array( $product->get_id() )
);
$random_products = get_posts( $args );
foreach ( $random_products as $post ) : setup_postdata( $post ); ?>
<li>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?></a>
</li>
<?php endforeach;
wp_reset_postdata();
?>