woocommerce offtopic - Query child posts with tax query on parents

admin2025-06-06  6

I have this WP_Query:

                new WP_Query(
                        array(
                            'post_type' => 'product_variation',
                            'post_status'       => 'publish',
                            'posts_per_page'    => -1,
                            'tax_query' => array(
                                array(
                                    'taxonomy' => 'product_cat',
                                    'field'    => 'slug',
                                    'terms'    => array( 'archive', 'membership' ),
                                    'operator' => 'NOT IN',
                                ),
                            ),
                            'fields' => 'ids',
                        )
                    );

The problem is, that the product_cat taxonomy is set on the parent products, not the variations. Meaning, I need to get all the variations whose parents are not in the specified categories, or in other words: get child posts but run the tax query on the parent posts.

I know this can be achieved with MySQL, but I was wondering if there's a clean way of doing it with WP_Query.

Thanks!

I have this WP_Query:

                new WP_Query(
                        array(
                            'post_type' => 'product_variation',
                            'post_status'       => 'publish',
                            'posts_per_page'    => -1,
                            'tax_query' => array(
                                array(
                                    'taxonomy' => 'product_cat',
                                    'field'    => 'slug',
                                    'terms'    => array( 'archive', 'membership' ),
                                    'operator' => 'NOT IN',
                                ),
                            ),
                            'fields' => 'ids',
                        )
                    );

The problem is, that the product_cat taxonomy is set on the parent products, not the variations. Meaning, I need to get all the variations whose parents are not in the specified categories, or in other words: get child posts but run the tax query on the parent posts.

I know this can be achieved with MySQL, but I was wondering if there's a clean way of doing it with WP_Query.

Thanks!

Share Improve this question asked Nov 14, 2018 at 10:27 Reuven KarasikReuven Karasik 1351 silver badge6 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

My solution to this ended up splitting this into 2 queries:

  1. Get the IDs of all the parent products I want to ignore
  2. Get all the variations that don't a post_parent from that list of IDs

    $archived_products = wc_get_products(
        array(
            'type' => array( 'variable', 'variable-subscription' ),
            'paginate' => false,
            'limit' => -1,
            'category' => array( 'archive', 'membership' ),
            'return' => 'ids',
        )
    );
    $my_query->set( 'post_parent__not_in', $archived_products );
    
转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1749179544a317029.html

最新回复(0)