Categoría oculta del blog

Ocultar categoría

Ocultar entradas de una categoría determinada puede ser algo util según el enfoque y contenidos de nuestro wordpress. Estas son unas pocas líneas de código agrupadas en dos sencillas funciones para conseguir que WordPress no muestre en el blog las entradas que tengan una o más categorías concretas y también evitar que aparezca esa categoría en el widget “Categorías”.

Un caso en qué querría hacer esto será si quiero tener una página sólo con las entradas de una temática concreta, por ejemplo entradas donde hablo de cursos que imparto. Tengo agrupadas estas entradas bajo una misma categoría (cursos) y no quiero que aparezcan el blog porque quiero tenerlos agrupados y evitarme posible contenido duplicado.

Ocultar una categoría del blog

Lo primero será editar el archivo functions.php añadiendo el siguiente código:


/** excluir la categoria del blog **/
function excludeCat($query) {
if ( $query->is_home ) {
$query->set('cat', '-54');
}
return $query;
}
add_filter('pre_get_posts', 'excludeCat');

después, en la línea
$query->set('cat', '-54');

cambio el valor ‘-54‘ por la ID de la categoría que quiero excluir, sin olvidar poner el signo menos () delante. En caso de querer excluir varias categorías las pongo separadas por coma
$query->set('cat', '-6,-11,-54');

 

Excluir una categoría del widget “Categorías”

Por supuesto, al quitar las entradas con determinadas categorías del blog también puedo querer quitarlas del widget “Categorías”, para eso tengo esta segunda función que añadiré seguido de la anterior en el archivo functions.php

/** excluir la categoria del widget categories **/
function exclude_widget_categories($args) {
$excluded = '54';
$args['exclude'] = $excluded;
return $args;
}
add_filter( 'widget_categories_args', 'exclude_widget_categories' );

Igual que antes, si quiero excluir varias categorías, las separo con comas pero esta vez no llevan el signo menos () por delante
$excluded = '25,32,65';

¡Compartir mola!Share on Facebook0Share on Google+0Share on LinkedIn0Tweet about this on TwitterBuffer this pageEmail this to someone

4 comentarios sobre “Categoría oculta del blog

  1. Gracias por tu artículo!

    Sólo tengo una pregunta: a qué altura de functions.php tengo que incluir estas líneas de código?

    Gracias!

  2. ¡Buenas!

    Ante todo, mil gracias por el post. Llevaba bastante tiempo queriendo ocultar una categoría de mi blog. Aunque me gustaría hacerte una pregunta. Además de ocultarlo del widget de categorías, me gustaría que al final de las entradas tampoco apareciese.

    Es decir, quitar la categoría oculta de la información que recoge en que categorías está asignada una entrada. No se si me explico bien >.<

    ¡Muchas gracias!

    1. Buenos días, Pablo.

      Primero, disculpa por tardar en contestar, me escribiste justo el día que salía de vacaciones.

      No sé si lo habrás resuelto ya pero te contesto: lo de quitar la categoría de la lista de categorías que se muestran junto a la entrada se puede hacer. Tienes que tocar un poco de código php, concretamente crear una función que luego reemplazarás donde se muestren las entradas(index.php, home.php, single.php, archive.php, category.php).

      Está resuelto aquí https://wordpress.stackexchange.com/questions/181182/hide-a-certain-category-name-without-removing-it

      Tienes que añadir esta función a tu archivo functions.php

      function exclude_cats($excludedcats = array()){

      $categories = get_the_category();
      $separator = ', ';
      $output = '';
      foreach($categories as $category) {
      if ( !in_array($category->cat_ID, $excludedcats) ) {
      $output .= 'term_id ).'" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '">'.$category->cat_name.''.$separator;
      }
      }
      echo trim($output, $separator);

      }

      El código sprintf( __( “View all posts in %s” ) lo puedes eliminar si quieres, reemplázalo por unas comillas vacías y listo.

      Después en los archivos donde aparecen las entradas (index.php, home.php, single.php, archive.php, category.php) tendrás que reemplazar la llamada a las categorías por la llamada a la función:

      exclude_cats(array(11, 40, 53));

      Siendo los valores que pasas al array (11, 40, 53) la/s id de la/s categoría/s que quieres ocultar.

      Espero haberte ayudado.

      Un saludo.

Deja un comentario

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