Mi tema de WordPress tiene una taxonomía personalizada llamada “Colecciones”. La taxonomía personalizada es jerárquica, por lo que existen subcolecciones.
Tengo una colección llamada “Libros” y una subcolección llamada “Novelas”. Hay algunas publicaciones que solo están en “Libros” y algunas publicaciones que están en “Novelas”. Quiero que la página de la colección “Libros” solo muestre las publicaciones de la colección principal de “Libros”, no las de la subcolección “Novelas”. Pero de forma predeterminada, WordPress incluye publicaciones en “subcolecciones” en la consulta de una taxonomía.
¿Cómo excluyo publicaciones en términos secundarios de mi consulta de taxonomía? Esto es fácil con categorías, pero parece que no hay una forma integrada de hacerlo con taxonomías personalizadas.
Actualizar:
La solución de Jan funcionó perfectamente. Aquí está el código que usé, colocado encima del bucle en index.php:
// if is taxonomy query for 'collections' taxonomy, modify query so only posts in that collection (not posts in subcollections) are shown.
if (is_tax()) {
if (get_query_var('collection')) {
$taxonomy_term_id = $wp_query->queried_object_id;
$taxonomy = 'collection';
$unwanted_children = get_term_children($taxonomy_term_id, $taxonomy);
$unwanted_post_ids = get_objects_in_term($unwanted_children, $taxonomy);
// merge with original query to preserve pagination, etc.
query_posts( array_merge( array('post__not_in' => $unwanted_post_ids), $wp_query->query) );
}
}