web-dev-qa-db-ja.com

WooCommerceでステータスが「在庫あり」の商品のみを検索する方法は?

特定の商品カテゴリ内の在庫のある商品のみを取得するクエリを作成しようとしています。

これは私が作業中のコードで、カテゴリ内のすべてのアイテムを引き戻してから、在庫があることを確認するまでそれらをループ処理する必要があります。

function CheckCategoryStock( $catToCheck ) {

    $args = array(
        'posts_per_page' => -1,
        'post_type'      => 'product',
        'hide_empty'     => 1,        
        'product_cat'    => $catToCheck,
    );

    $query = new WP_Query( $args );

    if ( $query->have_posts() ) {
        while ( $query->have_posts() ) : $query->the_post();
            global $product;
            if ( $product->is_in_stock() ) {
                $catCounter = 0;
                return 1;
            }        
        endwhile;
    }    

    return 0;

}    

このようにしてもうまくいきますが、在庫のあるものを見つける前に多数の製品をループ処理しなければならないため、コードが遅くなることがあります。

1
user116737

それはうまくいった!

これを追加しました:

        'meta_query' => array(
        array(
            'key' => '_stock_status',
            'value' => 'instock',
            'compare' => '=',
        )
    )      

ありがとうございます。

5
user116738