Get products which are visible in catalog in a WP_query on Woocommerce
Asked Answered
H

1

7

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?

Hypethral answered 6/12, 2018 at 19:30 Comment(0)
S
12

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.

Shandrashandrydan answered 6/12, 2018 at 23:43 Comment(1)
Thanks a lot for your help!Hypethral

© 2022 - 2024 — McMap. All rights reserved.