• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Core / Excluir páginas de la búsqueda de WordPress

Excluir páginas de la búsqueda de WordPress

Excluir páginas de la búsqueda

[ 15 agosto 2017 ] [ Actualizado: 9 diciembre 2021 ]
[ Autor: Jhon Marreros Guzmán ][ Core - Intermedio] [ ]

mejoras optimización

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Al trabajar en tu sitio, como parte del contenido básicamente tendrás entradas y páginas, en algunos casos existen algunas páginas que no quieres que aparezcan como parte de los resultados de la búsqueda de WordPress por lo que puedes evaluar excluirlas.

 

1- Excluir páginas usando un Plugin

La manera más simple de lograr excluir páginas de la búsqueda de WordPress es a través de un plugin, por ejemplo el plugin Search Exclude.

Este plugin no sólo servirá para excluir páginas sino también entradas, al crear o editar entradas o páginas verás una sección como se muestra en la siguiente imagen.

Plugin de exclusión de páginas en edición de página

 

2- Excluir páginas por código

Si quieres evitar el uso de un plugin, entonces puedes hacer la exclusión de páginas a través de código, puedes colocar el código directamente en tu archivo functions.php del theme que usas o usar un plugin de Snippets.

 

2.1 – Excluir todas las páginas de la búsqueda

Usaremos el siguiente código:


add_action( 'pre_get_posts', 'dcms_exclude_all_pages' );
function dcms_exclude_all_pages($query)
{
	if ( $query->is_search && $query->is_main_query() )
		$query->set( 'post_type', 'post' );
}

En el código anterior:

  • Se usa el hook pre_get_posts, este hook se llama antes de que se ejecute la consulta.
  • Hacemos referencia a la función dcms_exclude_all_pages.
  • Dentro de la función usamos dos condicionales, la principal es saber si la consulta es una búsqueda.
  • Ya que el objeto $query se pasa por referencia podemos hacer las modificaciones.

 

Podrías agregar otros CPT pasándolo como un array, por ejemplo:
$query->set( 'post_type', ['post', 'course'] );

 

2.2- Excluir sólo páginas específicas de la búsqueda

Usaremos el siguiente código:


add_action( 'pre_get_posts', 'dcms_exclude_specific_pages' );
function dcms_exclude_specific_pages($query)
{
	if ( $query->is_search() && $query->is_main_query() )
		$query->set( 'post__not_in', array( 1, 2, 3, 4, 5 ) );
}

En el código anterior:

  • Se usa el hook pre_get_posts, este hook se llama antes de que se ejecute la consulta.
  • Hacemos referencia a la función dcms_exclude_specific_pages.
  • Dentro de la función usamos dos condicionales, la principal es saber si la consulta es una búsqueda.
  • El objeto $query pasado por referencia, nos servirá para excluir las entradas o páginas

 

¿Aún con dudas?, en el siguiente video se explica cada uno de los puntos anteriores.

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • CRUD en WordPress sin pluginsCRUD en WordPress sin plugins
  • Cómo eliminar todos los productos de WooCommerceCómo eliminar todos los productos de WooCommerce
  • Agrupar los resultados de búsqueda en WordPressAgrupar los resultados de búsqueda en WordPress
  • tipos de complementos de WordPress5 tipos de complementos de WordPress
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (1 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Comentarios

  1. gerardo

    12 marzo, 2020

    Hola! gracias por tu articulo, tengo una duda en el código

    add_action( 'pre_get_posts', 'dcms_exclude_specific_pages' );
    function dcms_exclude_specific_pages($query)
    {
    	if ( $query->is_search() && $query->is_main_query() )
    		$query->set( 'post__not_in', array( 1, 2, 3, 4, 5 ) );
    }
    

    el array(1,2,3,4,5) esos números son el id de las páginas? o a que hace referencia?

    • Jhon Marreros Guzmán

      13 marzo, 2020

      Hola Gerardo, si, efectivamente esos números son los ids de las entradas que se excluirán.
      Saludos.

  2. Camilo Rivillas

    22 agosto, 2020

    Hola Jhon Marreros,

    Quisiera saber si me puedes ayudar con este código:

    add_action( 'pre_get_posts', 'dcms_exclude_all_pages' );
    function dcms_exclude_all_pages($query)
    {
    	if ( $query->is_search && $query->is_main_query() )
    		$query->set( 'post_type', 'post' );
    }

    Pero para ocultar las Web Stories.

    Te agradezco 🙂

    • Jhon Marreros Guzmán

      24 agosto, 2020

      Hola, a qué te refieres con web stories?, es algún contenido generado por algún plugin?
      Saludos.

      • Camilo Rivillas

        24 agosto, 2020

        Hola, sí es la nueva funcionalidad de google, es generado por un plugin oficial de google. Te agradezco.

  3. Francisco Javier Lagares

    3 diciembre, 2020

    Hola! Muchas gracias por el código, era justo lo que estaba buscando, pero tengo una duda.

    Cuando busco, me aparecen también en la página de resultados los post que tienen dentro un enlace hacia esa palabra que busco, me explico:
    Tengo una página de recetas, y busco la palabra cacao. Pues me aparecen dos post que llevan la palabra cacao en el título, y me aparece también una entrada cuyo nombre no lo incluye, pero que dentro se direcciona al post que lleva el título de cacao (un prev/next post).

    Quisiera saber como cambiarlo para que me aparezcan solo los post que lleven la palabra que busco en el TITULO de los post.

    Espero que haya quedado clara mi explicación,

    Muchas gracias

    • Francisco Javier Lagares

      3 diciembre, 2020

      Hola, acabo de encontrar la solución, gracias por el código inicial!!

      • Jhon Marreros Guzmán

        3 diciembre, 2020

        Que bueno :). Saludos.

  4. Alex Caja

    4 enero, 2021

    Hola!
    Gracias por el aporte. Pero que pasaría si quiero excluir de la búsqueda todos los productos de woocommerce!.

    • Jhon Marreros Guzmán

      6 enero, 2021

      Hola, el código del punto 2.1 en realidad te excluye todos los CPT y sólo busca en entradas, es decir excluye páginas, productos, etc.

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Presentación

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Jooble
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad social woocommerce

Populares

¿Qué son los Nonces en WordPress?

SMTP en WordPress, configuración para envío de correos

Subtítulo desde título de la entrada en WordPress

Tareas automáticas con wp-cron en WordPress

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2023 Todos los derechos reservados