I am attempting to build a tax_query, and I’m unable to make it behave.
What I want to retrieve from the query are two different content types:
- A) Posts that are in a specific Category
- B) Portfolio items (custom post type) that are in a specific portfolio-category
I could of course make two different queries and then merge their results… but I was under the impression that WP would allow to express this in a single query:
$args = array(
'post_type' => array( 'post', 'portfolio' ),
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => $cat,
),
array(
'taxonomy' => 'portfolio-category',
'field' => 'slug',
'terms' => $cat,
),
),
);
This query should return both A and B, but actually it returns only B (portfolio items). It ignores Posts that are in the $cat category.
However, if I remove any of the following conditions:
- removing “portfolio” from “post_type”, leaving only posts.
- removing the ‘portfolio-category’ part of the tax_query.
Then it returns the A result (but obviously not B).
Is there any logical explanation for this? Is it impossible to query at the same time for different post_types, and different taxonomies?