Personalizar la búsqueda por defecto en WordPress

Publicado por el día 25 May, 2011 | 11 comentarios


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 😉