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.

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.
$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.
Hola! gracias por tu articulo, tengo una duda en el código
el array(1,2,3,4,5) esos números son el id de las páginas? o a que hace referencia?
Hola Gerardo, si, efectivamente esos números son los ids de las entradas que se excluirán.
Saludos.
Hola Jhon Marreros,
Quisiera saber si me puedes ayudar con este código:
Pero para ocultar las Web Stories.
Te agradezco 🙂
Hola, a qué te refieres con web stories?, es algún contenido generado por algún plugin?
Saludos.
Hola, sí es la nueva funcionalidad de google, es generado por un plugin oficial de google. Te agradezco.
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
Hola, acabo de encontrar la solución, gracias por el código inicial!!
Que bueno :). Saludos.
Hola!
Gracias por el aporte. Pero que pasaría si quiero excluir de la búsqueda todos los productos de woocommerce!.
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.