使用数组过滤Woocommerce中的随机产品

时间:2019-07-13 09:35:41

标签: php arrays wordpress woocommerce

作为PHP的菜鸟,我正在尝试使用数组过滤Woocommerce中的产品。我设法只按类别过滤它们。

我还想过滤掉缺货和草稿中的那些(如果可能,按阵列)。

还有一个问题,如何在'product_cat'中添加多个类别?例如,当我要过滤帽衫衬衫时?

对于有货产品,我尝试了以下代码,该代码不起作用:

'meta_value' => array(
        array(
            'key' => 'get_stock_status',
            'value' => 'outofstock',
            'compare' => '!='
        )
    )

不确定,如何检查它们是否为草稿。

这是我的代码:

<ul class="products">
 <?php
 $args = array(
 'post_type' => 'product',
 'orderby' => 'rand',
 'posts_per_page' => 1,
 'product_cat' => 'hoodies'

 );
 $loop = new WP_Query( $args );
 if ( $loop->have_posts() ) {
 while ( $loop->have_posts() ) : $loop->the_post();
 woocommerce_get_template_part( 'content', 'product' );
 endwhile;
 } 

 wp_reset_postdata();
 ?>
</ul>

1 个答案:

答案 0 :(得分:0)

您可以通过将参数传递给meta_query

来检查产品是否有库存
'meta_query' => array(
    array(
        'key' => '_stock_status',
        'value' => 'instock'
    )
)

使用category__and检查多个类别,您需要传递一个类别ID数组

'category__and' => array(1,2) // select categories with array of IDs

要检查发布的帖子/产品,您需要将publish传递给post_status

'post_status' => 'publish' // select products that are published

它们看起来可能像这样(注意:未测试

 $args = array(
     'post_type' => 'product',
      'orderby' => 'rand',
      'posts_per_page' => 1,
      'category__and' => array(1,2), // replace these with your cat IDs
      'post_status' => 'publish',
      'meta_query' => array(
           array(
               'key' => '_stock_status',
               'value' => 'instock'
           )
       )
  );

  $loop = new WP_Query( $args );
  if ( $loop->have_posts() ) {
       while ( $loop->have_posts() ) : $loop->the_post();
            woocommerce_get_template_part( 'content', 'product' );
       endwhile;
  } 

  wp_reset_postdata();