Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get products which are visible in catalog in a WP_query on Woocommerce

I'm currently trying to get all products in a category page which are visible in catalog. I've tried this here but I'm getting no products with this query:

$args = array(
    'post_type'   => 'product',
    'product_cat' => get_queried_object()->slug,
    'meta_query'  => array(
        array(
            'key'     => '_visibility',
            'value'   => array( 'catalog', 'visible' ),
            'compare' => 'IN',
        )
    )
);
$loop = new WP_Query( $args );

var_dump( $loop );

When I remove the meta_query visibility part I'm getting all products including the hidden ones but I just need the visible ones. Whats wrong here?

like image 364
Mr. Jo Avatar asked Dec 06 '18 19:12

Mr. Jo


1 Answers

This need to be a tax query instead (as since woocommerce 3 it is now handled by product_visibility custom taxonomy):

$loop = new WP_Query(array(
    'post_type'   => 'product',
    'product_cat' => get_queried_object()->slug,
    'tax_query'   => array( array(
        'taxonomy'  => 'product_visibility',
        'terms'     => array( 'exclude-from-catalog' ),
        'field'     => 'name',
        'operator'  => 'NOT IN',
    ) )
) );

var_dump( $loop );

This should better work now.

like image 73
LoicTheAztec Avatar answered Oct 12 '22 21:10

LoicTheAztec