Meta i Tax querry zajedno

Imam neobičnu situaciju, trebam dohvatiti sve proizvode koji su u jednoj kategoriji, te sve proizvode uz njih koji su na sniženju.

Imam ovo:

args = array(
        'post_type'      => 'product',
        'offset'         => 0,
        'posts_per_page' => 20,
        'meta_query'     => array(
            'relation' => 'OR',
            array( // Simple products type
                'key'           => '_sale_price',
                'value'         => 0,
                'compare'       => '>',
                'type'          => 'numeric'
            ),
            array( // Variable products type
                'key'           => '_min_variation_sale_price',
                'value'         => 0,
                'compare'       => '>',
                'type'          => 'numeric'
            )
        ),
        'tax_query'      => array(
            array(
                'taxonomy' => 'product_cat',
                'field'    => 'slug',
                'terms'    => array( 'akcije-i-popusti' ),
                'operator' => 'IN'
            ),
        ),
    );

    return $args;

I to radi ali samo prvi ili drugi dio. Zajedno ne, dakle dobijem ili snižene proizvode ili iz kategorije akcije -i-popusti.

Ne znam što radim krivo, makar eto nisam do sada imao situaciju da kombiniram tako nešto.

Može kakva pomoć?

Izgleda da je kod većinom ispravan, ali postoji jedna greška. U tax_query dijelu, 'operator' => 'IN' je postavljen na način da traži kategorije koje se podudaraju s bilo kojom kategorijom navedenom u polju terms . Ako želite tražiti samo proizvode koji pripadaju toj određenoj kategoriji, trebali biste postaviti 'operator' => 'AND' .

Evo ispravljenog koda:

$args = array(
    'post_type'      => 'product',
    'offset'         => 0,
    'posts_per_page' => 20,
    'meta_query'     => array(
        'relation' => 'OR',
        array( // Simple products type
            'key'           => '_sale_price',
            'value'         => 0,
            'compare'       => '>',
            'type'          => 'numeric'
        ),
        array( // Variable products type
            'key'           => '_min_variation_sale_price',
            'value'         => 0,
            'compare'       => '>',
            'type'          => 'numeric'
        )
    ),
    'tax_query'      => array(
        array(
            'taxonomy' => 'product_cat',
            'field'    => 'slug',
            'terms'    => array( 'akcije-i-popusti' ),
            'operator' => 'AND'
        ),
    ),
);

return $args;

Sada bi ovaj kod trebao ispravno vratiti sve proizvode koji su ili jednostavni ili varijabilni, imaju cijenu veću od 0, i pripadaju kategoriji “akcije-i-popusti”.