Woocommerce产品查询库存状态

Mar*_*ova 8 php wordpress woocommerce

我使用了3种可用状态:"库存","缺货"和"允许延期交货".我想要只有"库存"状态的出口产品才能使用XML.问题是,woocommerce为两种状态返回值"instock":'in stock'和'allow for backorders'.现在查询看起来像:

$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();
Run Code Online (Sandbox Code Playgroud)

它以'instock'和'backorders_allowed'状态导出产品.也许有办法用'backorders_allowed'排除产品.

Tee*_*Jee 11

您可以拥有多个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();
Run Code Online (Sandbox Code Playgroud)


小智 9

强烈建议使用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();
Run Code Online (Sandbox Code Playgroud)

注意:如果你想包含多个stock_status,你可以简单地使用一个数组。

'stock_status' => array('instock', 'outofstock', 'onbackorder') 
Run Code Online (Sandbox Code Playgroud)