作为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>
答案 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();