Creando un Search para nuestro tema en WordPress
Una de las cosas que todo tema tiene que tener es un search o forma de buscar en el blog que se lo use, no es buena idea tener un blog sin un buscador. Siempre es bueno que el usuario tenga una manera de buscar o 2.
Primero antes de empezar con el search tenga en cuenta que la página puede tenerlo en múltiples lugares de esta, debemos tener en cuenta en que lugar resulta mejor para nuestra página.
Algunas páginas usan el search arriba en el header otras al costado, si miramos este blog lo tiene en la etiqueta main, esto depende de estética nada más. Los siguientes son los clásicos lugares donde puede estar search:
Para hacer la parte del formulario nos bastaría realizar un formulario que tenga un input con name=»s» y claro que un submit para mandar a procesar este.
<form action="<?php echo get_site_url();?>"> <input type="text" name="s" placeholder="search"/> <input type="submit" value="confirm"/> </form>
Lo segundo a tener en cuenta es la página donde no dirigirá nuestra búsqueda, esta página debe ser search.php aunque con index podemos levantar la búsqueda en otras palabras si no tiene el archivo search.php pondrá los resultados en index.php
En otras palabras si search.php es igual a index.php funcionara:
index.php y search.php<?php get_header(); if ( have_posts() ) { // Load posts loop. while ( have_posts() ) { the_post();?> <a href=""> <h1><?php the_title();?></h1> </a> <?php the_content(); } } else{ echo "no post to be showed"; } get_footer();
Ahora si queremos que nuestro search nos devuelva lo que hemos buscado podemos agregarle a search la siguiente función get_search_query() en nuestro index agregaré mi formulario para que vea un ejemplo sencillo:
por lo tanto ambos archivos quedaran como sigue:
/index.php<?php get_header(); ?> <form action=""> <input type="text" name="s" placeholder="search"/> <input type="submit" value="confirm"/> </form> <?php if ( have_posts() ) { // Load posts loop. while ( have_posts() ) { the_post();?> <a href=""> <h1><?php the_title();?></h1> </a> <?php the_content(); } } else{ echo "no post to be showed"; } get_footer();/search.php
<?php get_header(); echo "searched term: ".get_search_query(); if ( have_posts() ) { // Load posts loop. while ( have_posts() ) { the_post();?> <a href="<?php the_permalink();?>"> <h1><?php the_title();?></h1> </a> <?php the_content(); } } else{ echo "no post to be showed"; } get_footer();