Excluir páginas y/o post del listado de resultados del buscador de WordPress

A veces necesitamos ocultar ciertas páginas o entradas de los listados que nos muestra el propio buscador de WordPress, para posibilitar esto existen algunos plugins como por ejemplo Unlist Posts & Pages pero también se puede hacer con código y eso es lo que vamos a explicar en esta entrada.

El código necesario para conseguir lo que pretendemos es:

<?php
/* 
 * CÓDIGO PARA EXCLUIR PÁGINAS O POST DE LOS RESULTADOS DE RESULTADOS
 * DE LAS BÚSQUEDAS EN WORDPRESS.
 * SE DEBEN SUSTITUIR LOS NÚMEROS 1,2,3... POR LOS ID DE LOS CONTENIDOS 
 * QUE SE DESEAN ELIMINAR.
 */
 
add_action( 'pre_get_posts', 'wpsf_excluir_paginas_post' );
function wpsf_excluir_paginas_post($query)
{
	if ( $query->is_search() && $query->is_main_query() )
		$query->set( 'post__not_in', array( 1, 2, 3, 4 ) );
}

Como ves se trata de un par de líneas de código muy sencillitas. Aunque funcionaría correctamente, al tratarse de una funcionalidad que no está relacionada con el theme que estés utilizando, no es recomendable que coloques este código en el archivo function.php. Lo mejor es que te crees tu propio plugin de funcionalidades y lo insertes ahí.

Recuerda que con Pluginception. El plugin para crear plugins podrás crear ese plugin (valga la redundancia) de funcionalides. Aunque también puedes crearlo manualmente tal y como te explico en Cómo crear tu propio plugin de WordPress.

Si lo que deseas es eliminar de las búsquedas todas las páginas, por ejemplo, tendrías que colocar el siguiente código:

<?php
add_action( 'pre_get_posts', 'wpsf_mostrar_solo_las_entradas' );
function wpsf_mostrar_solo_las_entradas($query)
{
	if ( $query->is_search && $query->is_main_query() )
		$query->set( 'post_type', 'post' );
}
Ir arriba