WooCommerce -按产品可见性查询缺货也显示产品库存



我有一个代码在我的插件,是查询所有缺货的产品:

$args = array(
'post_type'  => 'product',
'nopaging'   => true,
'fields'     => 'ids',
'tax_query' => array( array(
'taxonomy' => 'product_visibility',
'field'    => 'name',
'terms'    => 'outofstock',
'operator' => 'IN',
) ),
);
$out_of_stock_product_ids = get_posts( $args );

然而,它也显示了具有product_visibility "instock"的产品。我可以通过在后面添加以下代码来验证这一点:

foreach ($out_of_stock_product_ids as $product_id) {
$product = wc_get_product($product_id);
echo $product_id . " - " . $product->get_stock_status() . "<br>";
}

结果是:

118823 - outofstock
118536 - instock
118534 - instock
118121 - outofstock
117859 - outofstock
117350 - outofstock
116879 - outofstock
116877 - outofstock

为什么它显示产品的库存状态为"instock",即使我查询的产品只有"缺货"?

您可以使用WC_Product_Query。看看医生。使用stock_status参数,此处为示例。

// Get out of stock products.
$args = array(
'stock_status' => 'outofstock',
);
$products = wc_get_products( $args );

然后你可以像这样输出:

foreach ( $products as $product ) {
echo $product->get_id() . " - " . $product->get_stock_status() . "<br>";
}

最新更新