web-dev-qa-db-fra.com

Comment interroger uniquement les produits dont le statut est "en stock" dans WooCommerce?

J'essaie de créer une requête qui extrait uniquement les produits en stock dans une catégorie de produits donnée.

Voici mon code de travail dans lequel je récupère tous les articles de la catégorie et que je dois ensuite les parcourir en boucle jusqu'à ce que je vérifie qu'il y en a un en stock.

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;

}    

Cette méthode fonctionne, mais le code est parfois lent car il doit parcourir plusieurs produits avant de pouvoir en localiser un en stock.

1
user116737

Cela a très bien fonctionné!

Je viens d'ajouter ceci:

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

Merci!

5
user116738