lunes, 7 de octubre de 2013

Hoy en AyudaWordPress.com

Hoy en AyudaWordPress.com

Link to Ayuda WordPress

Ajustes avanzados de búsqueda en WordPress

Posted: 07 Oct 2013 03:05 PM PDT

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.

No hay comentarios:

Publicar un comentario

Seguidores

Archivo del blog