Cómo excluir una categoría del listado de entradas de WordPress

Cuando trabajas con las categorías de las entradas para aquello de filtrar contenido en función de lo que, en cada momento, necesitas, te puedes encontrar también con la necesidad de excluir de la presentación algún tipo de contenido categorizado de cierta forma.

En el ejemplo de este blog, en el momento de escribir esta entrada las categorías existentes son: AVANZADO, INTERMEDIO y PRINCIPIANTE.

Con esta estructura lo que pretendo es clasificar el contenido en función de la dificultad o el nivel en WordPress requerido para su comprensión. El problema me surge cuando, además, utilizo la categoría de «DEFINICIONES» para alojar eso, las definiciones, que no se pueden clasificar por su nivel, sino simplemente por ser definiciones que sirvan como repositorio de términos utilizado en el mundillo WordPress.

En este caso no me parece apropiado que en la presentación de contenidos aparezcan las definiciones.

Para ello, podemos recurrir a algún plugin pero he preferido incluir unas líneas de código bastante simples. ¡Vamos al lío!

add_action( 'pre_get_posts', 'excluir_categoria_especifica' );
function excluir_categoria_especifica( $wp_query ) {   
    if( !is_admin() && is_main_query() && is_home() ) {
        $wp_query->set( 'cat', '-X,-Y,-Z' );
    }
}

Podríamos colocar este código al final de nuestro archivo funtion.php, pero esto no es recomendable, ya que no se trata de una función que esté relacionada con nuestro theme, sino que se trata de una función que debería aplicar con independencia del theme que estemos utilizando.

Recuerda que, cuando cambias de theme, todas las personalizaciones realizadas en el archivo function.php se pierden.

Para que esta función te sea útil debes sustituir X, Y y Z, por los números identificadores de las categorías que desees eliminar del listado. Si por ejemplo, quisiéramos eliminar del listado una única categoría con el ID=25 el código resultante sería:

add_action( 'pre_get_posts', 'excluir_categoria_especifica' );
function excluir_categoria_especifica( $wp_query ) {   
    if( !is_admin() && is_main_query() && is_home() ) {
        $wp_query->set( 'cat', '-25' );
    }

En esta entrada te explico cómo averiguar la ID de una categoría de tu instalación de WordPress

Ir arriba