Посмотрие примеры запросов на сайте wp-kama -
wp_query
Ваш случай - это секции
"Параметры категорий" и
"Параметры произвольных полей"
И да, конечно, одним запросом, просто используйте параметры выборки вместе.
Вот пример стандартного цикла, обратите внимание на переменную $args - здесь нужно описать параметры выборки,
// задаем нужные нам критерии выборки данных из БД
// отберем записи, которые находятся хотя бы в одной из категорий с id 2 или 6 (дочерние категории не будут учитываться)
// и выберем из них записи с ключом поля "color" и значением этого поля = "blue"
$args = array(
'category__in' => array(2,6),
'meta_key' => 'color', 'meta_value' => 'blue'
);
$query = new WP_Query( $args );
// Цикл
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
} else {
// Постов не найдено
}
// Возвращаем оригинальные данные поста. Сбрасываем $post.
wp_reset_postdata();