¿Alguna vez te has preguntado cómo puedes limitar tus resultados de búsqueda a tipos de publicación específicos? No es muy difícil. Ya te hemos mostrado cómo deshabilitar la función de búsqueda en WordPress modificando el archivo functions.php. Ahora vamos a hacer lo mismo, excepto para filtrar nuestros resultados de búsqueda.
Abre tu archivo functions.php y agrega los siguientes códigos:
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type',array('post','page'));
}
return $query;
}
add_filter('pre_get_posts','searchfilter');
Nota la línea que dice
$query->set('post_type',array('post','page'));
Puedes filtrar los resultados de búsqueda cambiando los valores en la variable de matriz. Ahora está configurado para mostrar publicaciones y páginas, pero puedes modificarlo para mostrar lo que quieras.

Ankit manandgar
¿cómo puedo obtener resultados de búsqueda solo por título de publicación?
Anna
Gracias por este código, funcionó, ¡aunque lo actualizaste por última vez en 2013! Mi tema también usa Búsqueda Instantánea y me gustaría limitar los resultados allí también. ¿Cómo podría hacerlo?
Sparsh Goyal
Mi tema actual muestra publicaciones con algunas líneas iniciales para el término/palabra buscada. Quiero personalizarlo para mostrar ese párrafo que contiene el término/palabra buscada en el extracto de la publicación. En otras palabras, quiero mostrar texto relacionado en el extracto de la publicación, no el párrafo inicial en los resultados de búsqueda. ¿Alguien puede ayudarme con esto...?
Azamat
Hola,
¿Cómo puedo limitar los resultados de búsqueda para tipos de publicación específicos Y términos de taxonomía personalizada específicos?
Steven
Tengo una función sencilla en el archivo functions.php de mi tema, que solo debería filtrar las Publicaciones por un término de búsqueda... cuando busco algo ahora, aparece el Error HTTP 500 "El sitio web no puede mostrar la página". ¿Alguien tiene una idea de qué está mal con mi función?
function searchFilter($query) { if ($query->is_search) { wp_reset_query(); $args = array ( ‘s’ => $_GET[‘s’] ); query_posts( $args ); } } add_filter(‘pre_get_posts’, ‘searchFilter’);
Greg
Esto está restringiendo todos los formularios de búsqueda al tipo de publicación personalizado, incluido mi formulario de búsqueda en la barra lateral, que necesita devolver todos los resultados. Esto me funciona:
function searchfilter($query) { if ($query->is_search && !is_admin() ) { if(isset($_GET[‘post_type’])) { $type = $_GET[‘post_type’]; if($type == ‘book’) { $query->set(‘post_type’,array(‘book’)); } } } return $query; } add_filter(‘pre_get_posts’,’searchfilter’);
Jonathan Joosten
Gracias por la ayuda, mejoré tu código para que la gente solo pueda buscar tipos de publicación permitidos.
function searchfilter($query) { if ($query->is_search && !is_admin() ) { if(isset($_GET[‘post_type’])) { $types = (array) $_GET[‘post_type’]; $allowed_types = get_post_types(array(‘public’ => true, ‘exclude_from_search’ => false)); foreach($types as $type) { if( in_array( $type, $allowed_types ) ) { $filter_type[] = $type; } } if(count($filter_type)) { $query->set(‘post_type’,$filter_type); } } } } add_filter(‘pre_get_posts’,’searchfilter’);
Dan Sz.
¿Cómo se implementa esto? Si estoy leyendo correctamente el comentario de Greg, queremos un solo formulario que esté limitado a un tipo de publicación, mientras mantenemos la búsqueda predeterminada intacta para otras áreas del sitio.
Lo pregunto porque un sitio en el que estoy trabajando necesita una "Biblioteca de Recursos" que se pueda buscar, la cual me gustaría desarrollar sin comprometer la funcionalidad de búsqueda normal.
Tadeu
Hola, ¿es posible limitar la búsqueda solo al título, categoría y etiquetas de las publicaciones?
Sandeep
Hola,
No puedo restringir páginas en el filtro de búsqueda.
Solo necesito la búsqueda dentro de las publicaciones y no de las páginas.
$query->set(‘post_type’,array(‘post’));
Esto también muestra páginas.
Jared
Solo una nota para agregar a esto, no necesitas devolver $query.
http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts
Peter
¡Gracias por el gran consejo!
Personal de WPBeginner
Nick La funcionalidad de búsqueda de WordPress no es muy buena para encontrar contenido.
Nick
Usé este código para restringir mis resultados de búsqueda a Páginas, no a Publicaciones. Funcionó en ese sentido, sin embargo, parece que solo busca los nombres de las páginas en lugar del contenido. Por ejemplo, si un usuario busca "precios", la página de Precios será un resultado, pero si buscan "precio" o "costo" (ambas palabras que están en la página de precios), no se encuentra nada. ¿Me falta algún fragmento de código?
emre
Hi,
I have a question and I couldn’t get a solution since last month.
I have lost of categories, pages and re-directions in my blog so my search box finds many unnecessary results when you try to search something. I want to customize my search.php for only categories part. In other words, we you search something, the results should be only from categories sections. So I will be get rid of redundant & duplicated results. My current codes are as below…Please help me
sam
¿Cómo limitar por categoría específica? gracias
Soporte de WPBeginner
Sam, por favor, consulta nuestra guía sobre cómo agregar un filtro de búsqueda de taxonomía en WordPress.
Administrador
Hasan Gad Allah
Thank you , i was looking for that code (Y)
Felix
Hay un problema con tu fragmento:
Limita los resultados de búsqueda en el backend, deberías envolverlo con:
if ( !is_admin() ) {
// snippet
}
bloggingfuture
Este es un código bastante valioso para WordPress. ¡Gracias!
Alan Hughes
Entonces, ¿cómo aplicarías esto a una barra de búsqueda específica? No se aplicaría el filtro a todas las barras de búsqueda de tu sitio, ¿verdad?
goJohnnyGo
¿Llegaste a averiguar cómo aplicar esto a barras de búsqueda específicas (no universalmente)?
Personal editorial
Sí, tenemos un artículo aquí:
https://www.wpbeginner.com/wp-tutorials/how-to-create-advanced-search-form-in-wordpress-for-custom-post-types/
Administrador
scotte_sprott
¿Cómo puedo limitar los resultados de búsqueda para que solo muestren páginas?
wpbeginner
@scotte_sprott En el array, solo mantén 'page' y elimina 'posts'.