Blogs / WordPress

Excluir posts de una categoría en la home de WordPress

Hace ya algún tiempo, cuando tenía instalado otro tema de WordPress en Batiburrillo.net, utilizaba Simple Exclude para excluir los artículos o posts de la categoría Destacados en la página principal (Home) ya que aparecen en el slider de la parte superior. Durante un cierto periodo de tiempo el plugin dejó de funcionar, no realizaba su función, evitar la duplicidad de referencias a un mismo artículo. (Hoy, como podréis comprobar, está activo, aunque lleva mucho tiempo sin actualizar). Así que me decidí a buscar una solución sin recurrir a un plugin. Descubrí que insertando una porción de código en el archivo functions.php del tema activo, el problema quedaba solucionado.

Lo primero que debemos hacer es averiguar el número que corresponde a la categoría o categorías a excluir. Para ello tendremos que ir a Entradas -> Categorías y localizarla o localizarlas en la lista que se muestra. Si colocamos el puntero del ratón sobre ella, veremos, en la parte inferior de la pantalla de nuestro navegador web el número que corresponde al tag_ID. (Si tu navegador no te permite ver dicho número, pulsa sobre el nombre de la categoría y lo verás en la barra de direcciones).

Añadir porción de código

Abre ahora el archivo functions.php de tu tema y desplázate a la parte inferior del mismo. Antes del final (?>) inserta el código siguiente:

// Excluir categoría en home
function exclude_category($query) {
if ( $query->is_home() ) {
$query->set('cat', '-1');
}
return $query;
}
add_filter('pre_get_posts', 'exclude_category');

Si quieres excluir más de una categoría, sólo tienes que añadirlas en la línea correspondiente. Quedaría algo similar a lo siguiente:

$query->set('cat', '-1 -699 -1234');

Conclusión

A partir de aquí, siempre que publiquemos algún artículo correspondiente a las categorías excluidas, éste no se mostrará en la página de inicio del blog o sitio web. Este método debe aplicarse siempre que tenemos, por ejemplo, un slider y no queremos que la referencia a un post aparezca dos veces.

Fabriciano González

Amante de la informática y de Internet entre otras muchas pasiones. Leo, descifro, interpreto, combino y escribo. Lo hago para seguir viviendo y disfrutando. Trato de dominar el tiempo para que no me esclavice.

12 Comentarios

  1. Gracias por el aporte!! Te hago una consulta. Si en la cabecera de la home tengo la etiqueta «destacada» de las categorías A,B y C. Pero luego en la home tengo más listados de estas mismas categorías y no quiero que me muestre el post con la etiqueta «destacada», ya que si no se me repite.
    Necesito excluir de las categorías A,B y C, todos los Post que tengan la etiqueta «destacada»
    Como lo puedo hacer?
    Saludos

    1. Prueba a hacer lo siguiente. Sustituye la línea $query->set(‘cat’, ‘-1’); por una similar a la siguiente:

      $query->set(‘cat=-1,-2,-3&tag=destacado’);

      He indicado la exclusión de tres categorías y de una etiqueta, pero puedes poner las que quieras.

      Saludos.

  2. Cordial saludo, este es mi caso:

    tengo dos categorías: A y B por así decirlo, las cuales hacen parte del menú blog, así que se puede ingresar a un submenú a y alli estan todas las categorías «a» y en submenú «b» todas las categorías B, pero también quiero que en el home solo me aparezcan las categorías A, así que pegué este script el resultado es que me desaparece las categorías del blog y efectivamente me muestra solo las categorías A.
    que puede ser?

  3. Hola. En mi caso el theme está configurado para armar una página de inicio en base a la info que toma en variados post.
    Entonces yo quiero que esos post (que no son artículos) sean excluidos de la página de blog (una página que llamé Artículos) y que aparezcan sólo los de una categoría específica. He probado plugins que excluyen categorías pero no me funcionan, y por eso recurro a cambiar el código.
    Podría indicarme cómo debería ser el código?
    Muchas gracias.

    1. Cuando hablas de la página de blog, ¿a qué te refieres? El código está pensado para incluirlo en la página de Inicio del sitio web. Lo que no tiene sentido es insertarlo en las páginas que corresponden a los artículos, ni tampoco en las que muestran las categorías. De ahí que no entienda tu pregunta.

      Saludos.

Responder a Ipse Pit Cancelar la respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.