Исключить продукты WooCommerce без отзывов из WP_Query - PullRequest
3 голосов
/ 10 июля 2020

Я пытался составить список 10 популярных товаров на основе общих продаж на веб-сайте WooCommerce с помощью настраиваемого запроса. Но в то же время товар с нулевыми / отсутствующими отзывами должен быть исключен из листинга. Какие-либо методы для достижения этого?

Ниже приведен код:

<?php
   global $woocommerce;
   global $product;
   $args = array(
      'post_type' => 'product',
      'posts_per_page' => 10,
      'meta_key' => 'total_sales',
      'orderby' => 'meta_value_num'
   );
   $popular_products = new WP_Query($args);
   if($popular_products->have_posts()):
?>
<ul>
    <?php 
       while ($popular_products->have_posts()) : $popular_products->the_post();
       $product = wc_get_product( get_the_ID() );
       $rating = round($product->get_average_rating()); 
    ?>
    <li>
        <h3><?php the_title(); ?></h3>
        <div><?php the_post_thumbnail(); ?></div>
        <p><strong>Rating: </strong><?php echo $rating; ?>/5</p>
        <a href="<?php the_permalink(); ?>">View Product</a>
    </li>
    <?php 
      endwhile; 
      wp_reset_postdata(); 
    ?>
</ul>
<?php endif; ?>

Я узнал о post__not_in, но не знал, как использовать его с рейтингом продукта. Любая помощь будет принята с благодарностью.

1 Ответ

3 голосов
/ 11 июля 2020

Следующие элементы дополнительно исключают Продукт с нулевым / отсутствующим обзором:

<?php
$products = new WP_Query( array(
    'post_type'      => 'product',
    'posts_per_page' => 10,
    'meta_key'       => 'total_sales',
    'orderby'        => 'meta_value_num',
    'meta_query'     => array( array(
        'key'        => '_wc_review_count',
        'value'      => '0',
        'compare'    => '>',
    )),
));

if( $products->have_posts() ): 
    ?>
    <ul>
    <?php 
    while ( $products->have_posts() ) : $products->the_post();
        $_product = wc_get_product( get_the_ID() );
        $rating   = round( $_product->get_average_rating() ); 
        ?>
        <li>
            <h3><?php the_title(); ?></h3>
            <div><?php the_post_thumbnail(); ?></div>
            <p><strong>Rating: </strong><?php echo $rating; ?>/5</p>
            <a href="<?php the_permalink(); ?>">View Product</a>
        </li>
    <?php 
    endwhile; 
    wp_reset_postdata(); 
    ?>
    </ul>
<?php endif; ?>

Обратите внимание, что global $woocommerce; и global $product; не нужны ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...