Cada vez es más cómodo usar diferentes tipos de entradas (o post types) en WordPress. Ya sea por el gran número de funciones disponibles, ya sea por la comodidad de tener diferentes tipos de entradas para estructurar y mostrar mejor el contenido de tu sitio web.
La cuestión es que la función de búsqueda por defecto de WordPress (ya sea el widget o la que llames desde una plantilla), sólo busca los resultados entre las entradas normales, no entre los tipos de entradas que hayas definido.
Pongamos un ejemplo, tenemos una tienda online y hemos creado dos tipos de entradas: videojuegos y películas. Si añadimos a nuestra barra lateral el widget ‘Buscar’ y hacemos una búsqueda desde él, nos daremos cuenta de que no muestra resultados para ninguno de nuestros productos. Así que, para que WordPress añada mis tipos de entradas a la búsqueda por defecto, sólo tienes que añadir la siguiente función al archivo functions.php del tema que estés usando:
// Define los tipos de posts donde se harán las búsquedas (posts normales, páginas, feed, videojuegos y películas)
function searchAll( $query ) {
if ( $query->is_search ) {
$query->set( 'post_type', array( 'post', 'page', 'feed', 'videojuegos', 'peliculas'));
}
return $query;
}
// Añadimos el flitro para que ahora, en las búsquedas por defecto,
//añada los tipos que le hemos definido en la función anterior.
add_filter( 'the_search_query', 'searchAll' );
Espero que os sea útil 😉
13 respuestas a «Personalizar la búsqueda por defecto en WordPress»
He probado con este procedimiento y no me funciona…..
me da error
Parse error: syntax error, unexpected ‘&’ in /home/xxx/public_html/contenido/themes/xxx/functions.php on line 69, ya que quiero cambiar el buscador de mi theme, xq no busca simplemente los post sino aparecen tambien hasta los attachment.
Hola Stalin, si has copiado y pgado el código tal cual, hazlo de nuevo porque la fechita: -> había sido sustituida por el editor por otro código (> de ahí lo del ‘Unexpected ‘&’) y por eso no funcionaba. De todas formas, cuando lo hagas, ten en cuenta que al pegar el código, es posible que las comillas simples se te peguen como comillas tipográficas, así que, al pegar el código, asegúrate de que las comillas son así: ‘. Espero que ahora sí te funcione 😉
Muchas Gracias, ya me sirvio, aunque quisiera acomodar mas el search ya que ahora me busca los post, y del texto señala la palabra clave que he buscado, pero el problema que tengo es que no me muestra la opcion o palabra mas acertada a la que estoy buscando sino me busca todas las entradas por ejemplo, en el buscador coloco:
actualizacion wordpress, es el nombre exacto del post.
y el resultado que me muestra, es de todas las entradas que he creado hasta el momento, y simplemente señala en color la palabra clave que he buscado.
Me alegro que ya te funcione :). Para lo que necesitas, tal vez te venga mejor instalar un plugin de búsqueda avanzada, que hay muchos 😉
http://wordpress.org/extend/plugins/search.php?q=search&sort=
[…] unos días leía una estupenda entrada de Rocío Valdivia, en la que compartía el modo de conseguir que el buscador de WordPress incluya resultados de tipos […]
[…] unos días leía una estupenda entrada de Rocío Valdivia, en la que compartía el modo de conseguir que el buscador de WordPress incluya resultados de tipos […]
seria posible usar la busqueda por los datos de registro del usuario, ciudad, peso, ojos, etc.
o es posible un buscador progresivo en wordpress
gracias
Pues creo que este plugin es justo lo que estás buscando 😉
http://wordpress.org/extend/plugins/bp-profile-search/
Hola Rocío! Cómo sería si lo que quiero es que el buscador sólo busque entre los posts y no en las páginas? Me gustaría hacerlo en functions.php en vez de con un plugin, para aprender más, pero bueno si hay algún plugin también estaría bien conocerlo. Ahora voy a probar a instalar algunos de los que comentas, pero si sabes cómo se haría en functions.php te lo agradecería! Saludos!
Hola Lidia, perdona por la tardanza en responder, el verano me despistó un poco :P. Si no quieres añadir las páginas a las búsquedas por defecto, tan sólo tienes que copiar la función de este artículo y eliminar ‘page’ del array de la línea 4.
Compruébalo y ya nos contarás 😉
Gracias Rocío! Creo que ya lo resolví, pero no recuerdo cómo! Muuuuchas gracias!
Hola rocio te hago una consulta, cuando pongo este codigo en function.php me rompe todo, quizas no lo estoy poniendo en el lugar correcto, queria ver si podias indicarme donde podria ponerlo o si podias decirme algun plugins que me permita hacer que solo busque en los post y nada mas. Muchas gracias espero que puedas responderme
Hola Adrián,
si copias la función, sólo tienes que sustituir donde pone «- & g t ;» (sin espacios) por «->» y te funcionará 😉 (un conflicto con el plugin de visualización de código lo transforma, lo arreglaré cuando tenga un huequito).