Cómo consultar solo productos con estado "en stock" en WooCommerce

2 abr 2017, 04:51:36
Vistas: 17.1K
Votos: 6

Estoy intentando construir una consulta que solo devuelva productos que están en stock dentro de una categoría de producto específica.

Aquí está mi código funcional donde obtengo todos los artículos de la categoría y luego tengo que recorrerlos hasta verificar que haya uno en stock.

function verificarStockCategoria( $categoriaAVerificar ) {

    $args = array(
        'posts_per_page' => -1,         // Obtener todos los productos
        'post_type'      => 'product',  // Tipo de post: producto
        'hide_empty'     => 1,          // Ocultar vacíos
        'product_cat'    => $categoriaAVerificar, // Categoría específica
    );

    $query = new WP_Query( $args );

    if ( $query->have_posts() ) {
        while ( $query->have_posts() ) : $query->the_post();
            global $product;
            if ( $product->is_in_stock() ) {  // Verificar si el producto está en stock
                $contadorCategoria = 0;
                return 1;  // Retornar verdadero si encuentra al menos uno en stock
            }        
        endwhile;
    }    

    return 0;  // Retornar falso si no encuentra productos en stock
}    

Hacerlo de esta manera funciona, pero a veces el código es lento porque tiene que recorrer varios productos antes de localizar uno que esté en stock.

1
Comentarios

Echa un vistazo a esto, quizás te pueda ayudar: Consulta para publicaciones de cualquier tipo pero solo agrega productos en stock

flomei flomei
2 abr 2017 05:06:06
Todas las respuestas a la pregunta 1
1
13

¡Funcionó perfectamente!

Acabo de agregar esto:

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

¡Gracias!

2 abr 2017 05:19:09
Comentarios

Me alegra que te haya funcionado. Si marcas esta publicación como una respuesta válida a tu pregunta, esto ayudaría a las estadísticas de "preguntas sin responder". ;-D Además, la gente verá que pueden encontrar una solución a su problema aquí.

flomei flomei
3 abr 2017 00:09:48