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.
Muchas gracias, lo probe en mi blog que necesitaba excluir algunas cosas y funciono.
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
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.
Me ha funcionado perfectamente para excluir dos categorías, muchísimas gracias.
Me alegro de que te haya servido.
Saludos.
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?
No entiendo lo que explicas. Fíjate que el script es para excluir un determinado artículo de la página de Inicio, cuando en ésta se muestran automáticamente todos los artículos que publicas.
Saludos.
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.
Por fin un codigo que funciona! Pero en el caso que solo quisieramos que fuera en la pagina de blog y no en home, como seria?
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.
Excelente aporte. me ha sido de mucha utilidad.
gracias
Me alegro de que haya servido.
Saludos.