Temas (VIII) Crear un tema, Introducir el loop

Como ya he dicho, una de las cosas más potentes de WordPress es el loop, quien domina el loop domina wordpress, de hecho hasta ahora no lo hemos utilizado en nuestra plantilla de forma directa, pero ya va siendo hora de introducir el loop en nuestro tema, y vamos a hacerlo en el index.php, que como dijimos cuando empezamos a hablar de los temas, es el archivo más importante junto con style.css.

De momento nuestro tema es capaz de tener cabecera, pie, aside y menú dinámico, pero de nada nos sirve si no podemos mostrar el contenido de nuestra web. En el archivo index.php vamos a introducir un bucle para poder ir viendo las últimas entradas de nuestro blog de forma dinámica.

Para ello modificaremos el archivo index.php de la siguiente forma:

<?php get_header(); ?>
<?php if(have_posts()) : while (have_posts()) : the_post(); ?>
<article>
<h3><a href="<?php the_permalink();?>"><?php the_title();?></a></h3>
		<small><?php the_time(get_option('date_format'));?> <?php the_category(', ');?></small>
		<?php the_excerpt();?>
		<a href="<?php the_permalink();?>"><?php _e('Seguir leyendo &rarr;', 'vo');?></a>
	</article>
<?php endwhile; else:?>
<article>
<h3><?php _e('No hay contenidos disponibles');?></h3>
		<?php _e('No hay contenidos que correspondan con esta página, por favor realice una búsqueda', 'vo');?>
		<?php get_search_form();?>
	</article>
<?php endif; ?>
<?php if( get_next_posts_link() || get_previous_posts_link()){ ?>
<div>
	<?php next_posts_link(__('&larr; Previos', 'vo'));?>
	<?php previous_posts_link(__(' Más recientes &rarr;', 'vo'));?>
</div>
<?php }?>
		</section>
<?php get_sidebar(); get_footer(); ?>

De esta forma podemos observar que en hemos eliminado todos los artículos estáticos y hemos hecho lo siguiente:

  • Línea 2: comprobamos que existen posts y si es así iniciamos nuestro bucle que llega hasta la línea 9
  • El bucle: no vamos a entrar en muchos pormenores de este apartado, ya que hemos hablado largo y tendido ya anteriormente del bucle, no obstante, hay que señalar como aparte de las propias funciones utilizadas para tomar información del post, hemos introducido también el sistema de traducción de cadenas para wordpress en el apartado seguir leyendo. Naturalmente en el bucle podemos hacer todo lo que queramos, como poner imagenes, presentar la información como queramos… en este sentido hemos hecho dos cosas en dos de las funciones:
    • en la función the_time() hemos introducido el argumento ‘date_format’ para que en lugar de darnos la hora, nos de la fecha de publicación
    • en la función the_category() hemos introducido el argumento ‘, ‘ que hace de separador entre las categorías y sin el cual nos aparecerían como una lista.
  • Línea 9: aquí no solo termina el bucle, también añadimos una condición en caso de que el usuario llegue a una página donde no hay datos para mostrar, en cuyo caso aparecerá el texto “No hay contenidos que correspondan con esta página, por favor realice una búsqueda” que está preparado para su traducción.
  • Línea 13: Hacemos que aparezca el buscador de la web para que de ese modo el usuario pueda buscar contenido.
  • Línea 16: Aparece un condicional donde se envían dos funciones; get_next_posts_links() y get_previous_posts_links() para comprobar si hay o no  artículos previos o siguientes, y en caso de que los haya, utiliza las funciones next_posts_link() y previous_post_links() en las líneas 18 y 19 respectivamente para mostrar los enlaces que les indicamos en los parámetros.

Con esto tenemos un index.php listo para trabajar y esperar eventualidades, como ya vimo en la entrada de estructura de un tema, ya que el index es la última referencia a la que WP hace referencia en caso de no encontrar otra página en el camino de la jerarquía.

template-hierarchy