簡體   English   中英

Woocommerce 產品庫存狀態查詢

[英]Woocommerce product query for stock status

我使用 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();

它出口具有“instock”和“backorders_allowed”狀態的產品。 也許有辦法排除帶有“backorders_allowed”的產品。

您可以有多個 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();

強烈建議使用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') 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM