As you probably know it, categories are taxonomies. When you use the arguments such as category__in
, it will add a tax query to your WP_Query()
. So, your situation would be something like this:
$args = array(
'post_type' => 'post',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => array( 12 ),
'operator' => 'IN',
),
array(
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => array( 11, 12, 13 ),
'operator' => 'NOT IN',
),
),
);
$query = new WP_Query( $args );
I wouldn’t think of performance issues here. This is most likely your only solution, if you don’t want to directly query the posts from database by using a SQL query ( This might improve the performance a bit ).