Woocommerce产品查询库存状态

时间:2016-03-24 16:54:58

标签: php wordpress woocommerce

我使用了3种可用状态:'库存'库存'缺货'和'允许延期交货'。我想要出口的产品只有库存和产品。状态到XML。问题是,woocommerce返回价值" instock"对于这两种状态:'库存'和'允许延期交货'。 现在查询看起来像:

$query = array(
    'post_type' => 'product',
    'posts_per_page' => -1,
    'meta_query' => array(
        array(
            'key' => '_stock_status',
            'value' => 'instock'
        )
    )
);
$wp_query = & new WP_Query($query);
while ($wp_query->have_posts()) : $wp_query->the_post();

它用' instock'导出产品。和' backorders_allowed'状态。也许有方法可以使用' backorders_allowed'

来排除产品

2 个答案:

答案 0 :(得分:10)

您可以拥有多个meta_query过滤器。见(http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters)。默认情况下,这些过滤器之间的关系是AND,这是可以的。您可以为_back_order = no添加过滤器。

$query = array(
    'post_type' => 'product',
    'posts_per_page' => -1,
    'meta_query' => array(
        array(
            'key' => '_stock_status',
            'value' => 'instock'
        ),
        array(
            'key' => '_backorders',
            'value' => 'no'
        ),
    )
);
$wp_query = & new WP_Query($query);
while ($wp_query->have_posts()) : $wp_query->the_post();

答案 1 :(得分:2)

强烈建议使用WC_Product_Query()代替WP_Query()

因此,我向您展示了如何使用WC_Product_Query()来做到这一点。

$query_args = array(
    'limit'   => 10, //or whatever number of products you want to get.
    'stock_status' => 'instock' // or 'outofstock' or 'onbackorder' 
);

$query = new WC_Product_Query( $query_args );
$products = $query->get_products();

注意:如果要包含多个stock_status,则只需使用数组即可。

'stock_status' => array('instock', 'outofstock', 'onbackorder')