О боги, ну сколько можно повторять,
никогда не используйте query_posts!
1. Используйте WP_Query или хук pre_get_posts
2. В WP_Query используйте Tax_Query:
$args = [
'posts_per_page' => 10,
'tax_query' => [
'relation' => 'AND', // объединяем результаты по двум инструкциям
// Инструкция 1 - получить все посты из родительской категории и ее потомков
[
'taxonomy' => 'category',
'field' => 'slug',
'terms' => 'special_cat',
'include_children' => true,
],
// Инструкция 2 - а теперь исключить все посты родительской категории
[
'taxonomy' => 'category',
'field' => 'slug',
'terms' => 'special_cat',
'include_children' => false,
'operator' => 'NOT IN',
],
],
];
$result = new WP_Query( $args );