Ajustes avanzados de búsqueda en WordPress

buscador avanzado wordpress

El formulario de búsqueda que tenemos hace años en WordPress es quizás de los elementos más utilizados por cualquier usuario pero es poco menos que simple, no permite refinar los resultados por etiqueta o categoría, por ejemplo.

Un formulario de búsqueda estándar en WordPress suele ser algo así:

<form method="get" action="<?php bloginfo('url'); ?>">
<fieldset>
<input type="text" name="s" value="" placeholder="buscar&hellip;" maxlength="50" required="required" />
<button type="submit">Buscar</button>
</fieldset>
</form>

Esto nos dará el resultado estándar, sin discriminar nada, pero la realidad es que el formulario de búsqueda se puede ampliar enormemente para hacer mejores búsquedas mediante una buena cantidad de plugins, pero lo que quizás no sabías es que hay montones de parámetros que se le pueden añadir a un formulario para mejorarlo:

  • attachment
  • attachment_id
  • author
  • author_name
  • cat
  • category_name
  • comments_popup
  • day
  • error
  • feed
  • hour
  • hour
  • m
  • minute
  • monthnum
  • name
  • p
  • page_id
  • paged
  • pagename
  • post_parent
  • post_type
  • preview
  • second
  • static
  • subpost
  • subpost_id
  • tag
  • tag_id
  • tb
  • w
  • year

Lo mejor de todo es que son variables que puedes utilizar con WP_Query para crear unos estupendos, y mucho más funcionales formularios de búsqueda mediante HTML y PHP.

… Formulario de búsqueda por categoría …

Puedes hacer búsquedas manuales usando las variables antes definidas, pero discriminando por categoría. Un ejemplo sería algo así:

http://miweb.es/?s=plabra+clave&category_name=mi-categoria

Pero es mucho más elegante, y menos exigente para nuestros visitantes mejorar nuestro formulario de búsqueda. Podríamos, por ejemplo, modificarlo para que pueda elegir entre varias categorías, algo así:

<form method="get" action="<?php bloginfo('url'); ?>">
<fieldset>
<input type="text" name="s" value="" placeholder="buscar&hellip;" maxlength="50" required="required" />
<select name="category_name">
<option value="">todas las categorías</option>
<option value="kittens">mi categoría</option>
<option value="puppies">mi otra categoría</option>
</select>
<button type="submit">Buscar</button>
</fieldset>
</form>

Aunque sería mucho más útil permitirle elegir entre todas las categorías de este modo:

<form method="get" action="<?php bloginfo('url'); ?>">
<fieldset>
<input type="text" name="s" value="" placeholder="buscar&hellip;" maxlength="50" required="required" />
<select name="category_name">
<?php
// crear lista de categorías
$categories = get_categories();
foreach ($categories as $category) {
    echo '<option value="', $category->slug, '">', $category->name, "</option>\n";
}
?>
<button type="submit">Buscar</button>
</fieldset>
</form>

buscador con lista de categorías

… Formulario de búsqueda por etiqueta …

Igual que para las categorías, también se pueden hacer búsquedas discriminando por etiqueta, algo así:

http://miweb.es/?s=plabra+clave&tag=mi-etiqueta

Pero, de nuevo, es mucho mejor ser menos exigente con nuestros lectores y facilitarles la vida e, igual que antes, permitirles refinar las búsquedas eligiendo etiquetas:

<form method="get" action="<?php bloginfo('url'); ?>">
<fieldset>
<input type="text" name="s" value="" placeholder="buscar&hellip;" maxlength="50" required="required" />
<select name="tag">
<option value="">cualquier tag</option>
<option value="mi tag">mi tag</option>
<option value="mi otra tag">mi otra tag</option>
</select>
<button type="submit">Buscar</button>
</fieldset>
</form>

O permitiéndole elegir entre todas las existentes:

<form method="get" action="<?php bloginfo('url'); ?>">
<fieldset>
<input type="text" name="s" value="" placeholder="buscar&hellip;" maxlength="50" required="required" />
<select name="tag">
<?php
// crear lista de tags
$tags = get_tags();
foreach ($tags as $tag) {
    echo '<option value="', $tag->slug, '">', $tag->name, "</option>\n";
}
?>
</select>
<button type="submit">Buscar</button>
</fieldset>
</form>

buscador con lista de tags

… Formulario de búsqueda por múltiples parámetros …

Pero ¿y si queremos que el usuario pueda realizar una búsqueda en, digamos, varias etiquetas a la vez, no solo en una. Además, que para lograr esto no hay URL que lo consiga, así que si o si tendríamos que crear un formulario de este tipo:

<form method="get" action="<?php bloginfo('url'); ?>">
<fieldset>
<input type="text" name="s" value="" placeholder="buscar&hellip;" maxlength="50" required="required" />
<p>Buscar dentro de las siguientes tags:</p>
<?php
// crear lista de tags
$tags = get_tags();
foreach ($tags as $tag) {
    echo
        '<label>',
        '<input type="checkbox" name="taglist[]" value="',  $tag->slug, '" /> ',
        $tag->name,
        "</label>\n";
}
?>
<button type="submit">Buscar</button>
</fieldset>
</form>

En este ejemplo hemos mostrado la lista de tags pero podemos hacerlo igualmente con cualquier otra variable de la lista.

Lo mejor de estos formularios es que puedes incluirlos en tu tema WordPress directamente o a través de widgets, con la salvedad de que para los que usan PHP deberás antes habilitar su ejecución en widgets, para lo que necesitarás antes activar algún plugin de los muchos que hay o añadir esta funcionalidad de ejecutar PHP en widgets sin plugins.

Y por hoy nada más, si se te ocurre algún otro modo de mejorar los formularios de búsqueda nos lo cuentas en los comentarios.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(3 votos, promedio: 4.7)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

13 comentarios en “Ajustes avanzados de búsqueda en WordPress”

  1. Xavier Ocampos

    Una vez más, muchas gracias. Quería desarrollar una especie de red social o intranet en WordPress con búsquedas avanzadas y esto soluciona a la perfección uno de mis problemas, al menos cara al usuario. Cara a los miembros del sitio todavía estoy viendo como estructurarlo ya que mi idea es que sin ayuda de ningún plugin el usuario pueda registrarse como grupo, una vez quede activado el grupo por parte de un administrador el registrante pueda agregar miembros a su grupo (colaboradores por así decirlo) y a su vez estos puedan dar de alta entradas únicamente en los post-type correspondientes a su grupo. Por el momento estoy pensando la forma en la que el administrador del grupo pueda generar post-type desde el back-end a modo de «proyectos».

    La búsqueda avanzada me resulta sumamente útil, por no decir esencial para crear un panel de búsqueda desde el cual el usuario pueda filtrar sus búsquedas sin necesidad de chutarse todas las entradas relacionadas con la palabra que buscó, ya que cada proyecto es único e independiente.

    Creo que este seria el proyecto mas importante que he querido desarrollar en WordPress, y si me sale bien y tengo un poco de suerte me animare a empaquetarlo en forma de plugin y enviarlo a la página oficial de plugins wordpress a ver si lo publican.

      1. Xavier Ocampos

        Jajaja muchas gracias, de funcionar funcionara, no se si como yo quiero exactamente pero lo haré funcionar con tiempo y paciencia, por supuesto con las correspondientes menciones a todos los que ayudaron en la labor, ya que por ejemplo lo de las búsquedas sera gracias a tu ayuda. 😛

  2. Esta nota me parecido super interesante ya que tengo que hacer que el buscador en mi wordpress tenga características especiales.

    Mi pregunta es alguien me podría ayudar por ejemplo si yo quisiera que el buscador busque en tres categorías determinadas ejemplo: la categoría mes, luego la categoría año y después la categoría tema, como muestra esta captura de pantalla:

    Agradecería su respuesta.

    Saludos

    Juan

  3. Justo lo que andaba buscando. Pero si quisiera que me hiciera búsqueda por múltiples parámetros pero de una etiqueta en concreto?

    Gracias por estas aportaciones!

  4. hola, que pasa si lo que quiero es que en mi busqueda incluya singular o plurar, por ejemplo: el usuario busca ‘manzana’ o ‘manzanas’ muestre la pagina de Frutas

  5. En primer lugar, es un gustazo contar con recursos así, mil gracias.

    Mi duda es la siguiente, se pueden excluir categorías en las búsquedas?

    Gracias por vuestro tiempo

  6. marcos sandoval duran

    use la opcion para seleccionar varios tags, pero no me sirve, selecciono solo 2 tags y al darle buscar igual me tira todos los posts

  7. Pingback: #199 ¿Cómo personalizar la búsqueda de WordPress? | Fernan Díez - fernan.com.es

  8. Muy bueno el post!! si yo quisiera armar un desplegable con categorías mes y año y que no sea necesario seleccionar uno de cada uno, como sería. no tengo mucha idea de estos códigos, pero si reemplazo por ejemplo la palabra tags por años y por meses, andaría?

    muchas gracias!!

  9. Muchas gracias por el aporte, es exactamente lo que estaba buscando para hacer un filtro avanzado en mi web de descargas.
    El tema que utilizo lo cree desde cero, mi intencion es poco a poco convertirlo en un tema premium ya que bueno varios de mis colegas con web’s similares a la mía me lo han comprado, nada mejor que incluir un par de filtros avanzados para hacerlo mas vistoso y útil para los usuarios.

  10. Hola, un éxito de tutorial. Estoy desarrollando un repositorio virtual y necesito buscar por categorías pero que dentro de un form contenga «n» cantidad de que me permitan hacer click en ellos y cada image al hacerle click me busque filtrando por categorías, conoces alguna otra manera de hacerlo?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido