Modificar los resultados de búsqueda en WordPress

Modificar los resultados de búsqueda en WordPress es algo que puedes necesitar hacer si tienes varios tipos de contenidos, como custom posts y necesitas agregar estos al resultado que por defecto está definido para entradas y páginas.

Otro caso, más simple es dejar solo las entradas en los resultados de búsquedas. En mi caso, prácticamente nunca, necesito dejar las páginas visibles a las búsquedas de los usuarios de un sitio web, solo las entradas.

En este tutorial te voy a mostrar como excluir las páginas del resultado de búsqueda, incluir custom posts y además, modificar otros parámetros de la query que se ejecuta al realizar un búsqueda.

Mostrando solo entradas (posts)

El caso más común es “sacar” las páginas de los resultados de búsqueda. Para ello, podemos utilizar el código:

Lo que hemos hecho acá es filtrar la query antes de que se ejecute. Evaluamos si es una query que se va a ejecutar como resultado de una búsqueda y cambiamos el parámetro post_type a post. Originalmente, post_type viene con los valores post y page.

 

Modificar los resultados de búsqueda en WordPress
Buscador en WordPress

Agregando custom posts

Al definir un custom post, es probable que queramos incluirlo en nuestros resultados de búsquedas. Un caso práctico sería, un catálogo de películas, que arroje resultados al buscar por título o sinopsis.

Para definir y agregar un custom post a los resultados de búsqueda utiliza el código:

Lo que hemos hecho acá es registrar el custom post movies pasándole un grupo de parámetros imprescindibles y además, el  parámetro public => true que especifica que es público y el parámetro exclude_from_search => false que especifíca que no debe ser excluído del buscador.

Por defecto, public es igual a false y exclude_from_search es siempre inverso al valor de public. Por lo tanto, si establecemos que public => true no es necesario especificar que exclude_from_search => false. Lo hemos hecho de todas formas para explicar bien lo que necesitamos hacer.

Agregando un custom post definido previamente como privado

Si queremos incluir movies en los resultados de búsqueda pero este ya fue definido antes en un plugin y no queremos modificar el código directamente, por como todos sabemos, no es recomendado, tenemos que modificar ese comportamiento utilizando el código:

Esta solución es similar a la que utilizamos para establecer solo las entradas en los resultados de búsqueda. La diferencia es que cambiamos post por movies que es el identificador del custom post Movies.

Si queremos agregar movies sin eliminar post, definimos el valor como un arreglo, quedando de esta forma:

$query->set('post_type', array( 'post', 'movies') );

Modificando otros parámetros en los resultados de búsqueda

Lo que haremos ahora será modificar la cantidad de publicaciones de cualquier tipo a mostrar en los resultados de búsqueda. Generalmente las publicaciones en los resultados de búsqueda se muestran mas pequeñas que en el blog o en la portada, por lo que no es extraño aumentar la cantidad de publicaciones por páginas, para aprovechar el máximo el espacio.

Para ello, utilizamos el código:

Lo que hemos hecho es obtener la cantidad de publicaciones por página establecidas en las preferencias y siempre mostrar el doble en los resultados de búsqueda. Podríamos utilizar un número específico o algún valor calculado, como ha sido el caso.

Ten en cuenta que puedes combinar este parámetro con los que hemos visto antes. No es necesario utilizar uno por función. Lo hemos hecho así para mantener el foco y no complicarnos.

Explora las posibilidades

Te recomiendo conocer un poco más sobre WP_Query. Con un mejor entendimiento de todos los parámetros que puedes utilizar, podrás mejorar significativamente los resultados de búsqueda.

Anímate y comenta si ya has implementado algo así o si tienes alguna duda. Si te ha gustado, comparte y haz llegar este tutorial a otros. Si no te ha gustado, quizás a otro sí, así que igual se agradece que compartas.

Recursos utilizados

Deja un comentario