Oferta SiteGround Black Friday

Cómo excluir categorías del loop (actualizado)

Hay ocasiones en que no quieres que se muestren posts de ciertas categorías en tu blog, bien porque las quieres mostrar solo en secciones específicas, o porque son solo para un tipo de usuario, tu decides el motivo.

Si alguna vez has pensado en que necesitas excluir posts de ciertas categorías y que no se muestren en según que lugares de tu blog, la página principal, por ejemplo, aquí tienes dos modos de conseguirlo.

Ultimate Category Excluder

Como siempre, o casi, hay un plugin para conseguirlo. Gracias a Ultimate Category Excluder puedes decidir si ciertas categorías se mostrarán en la página principal o incluso en la lista de categorías de tu barra lateral. Solo tienes que elegir la categoría y marcar las casillas adecuadas a cada caso.

Modificando el Loop

Por supuesto, también puedes modificar manualmente el loop de WordPress, lo que te dará mucha mas flexibilidad pues vas a poder utilizar este sistema de exclusión de categorías en cualquier lugar de tu blog.

Para ello debes modificar la «llamada» a las categorías de posts a mostrar por algo similar a este ejemplo:

<!--?php if ( have_posts() ) : query_posts($query_string .'&cat=-1,-2'); while ( have_posts() ) : the_post(); ?-->

Donde ‘-1’ y ‘-2’ serían los ID de categoría a excluir que, como es normal, puedes ampliar, reducir o cambiar a tu gusto.

Añadiendo una función que las excluya

Lo mismo pero más limpio, sería añadir una función como esta a tu plugin de personalizaciones o al fichero functions.php  del tema hijo:

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

 

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en los emoticonos para valorarlo!

Promedio de puntuación 5 / 5. Total de votos: 4

Hasta ahora ¡no hay votos!. Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Ayúdame a mejorar este contenido!

Por favor, dime, ¿cómo puedo mejorarlo?

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado. ¡Ah! ¿te funciona? pues entonces no he dicho nada :)

Sobre el autor

9 comentarios en “Cómo excluir categorías del loop (actualizado)”

  1. A mi lo que me gustaría hacer es evitar que se vean las subcategorías en la barra lateral, en el widget de categorías que tengo puesto, pero que se siguieran viendo en las entradas que la llevan y como no, todas esas noticias en al página principal. ¿Habría alguna forma de hacerlo?

  2. Interesante, sobre todo porque en la imagen aparece la opción de no mostrar los post de algunas categorias en la pagina archive, leí en alguna parte que eso era imposible de hacer con un plugin… Lo probare.

    Saludos

  3. Hola Fernando. Gracias por el articulo. Probé modificar el loop para excluir las categorias de la forma que tu dices en el tema Kubrick y funciona perfectamente, pero cuando lo intento en K2 que es el tema que estoy usando, me produce un error y el sitio deja de funcionar.

    Alguna idea de a que puede deberse?

  4. Hola, fijate que inserte el codigo que tu expones aqui, modificando las IDS que deseo excluir las cuales son 3 y 4 y resulta que no pasa nada al actualizar el archivo del tema.

    Te dejo mi index original por si me deseas ayudar, las ID´s que quiero excluir son las 3 y 4.

    Aqui pegue el codigo PHP del index en copypastecode
    http://www.copypastecode.com/36526/

    Gracas por su ayuda!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información base sobre privacidad:
- Responsable: Fernando Tellado ([email protected])
- Fin del tratamiento: Moderación de comentarios para evitar spam
- Legitimación: Tu consentimiento
- Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
- Derechos: Acceso, rectificación, portabilidad, olvido

 

Scroll al inicio