El loop es el núcleo absoluto del funcionamiento de WordPress. Es el encargado de mostrar el post o los posts que tengas en tu base de datos. La estructura básica es la siguiente
1 2 3 4 5 6 7 |
<?php if (have_posts()) : while (have_posts()) : the_post(); ... endwhile; else: ... endif; ?> |
No deja de ser un bucle while que se inicia al cumplir la condición if. Para que comience el bucle while es preciso comprobar que hay post que recorrer, ahí entra la función have_posts(). Lo que permite la función the_post() es poder usar otras funciones relacionadas con el post que se está recorriendo.
Pondré el ejemplo de un loop explicado paso a paso. Primero de todo, comprobamos si hay posts en la la consulta (have_posts()).
1 |
<?php if (have_posts()) : ?> |
De haber posts tendrá como resultado el comienzo del bucle
1 |
<?php while (have_posts()) : the_post(); ?> |
Con el bucle while, se mostrarán los posts siempre y cuando haya un post que mostrar. La funcion the_post() permite usar funciones para obtener datos del post que se está recorriendo. Ahora comenzaría la estructura del post
1 |
<div class="post" id="post-<?php the_ID(); ?>"> |
Se abre la etiqueta div que contendrá el contenido del post. Con la funcion the_ID() se obtiene el ID del post que está en ese momento en el bucle. Proseguimos con el contenido del div
1 2 3 |
<h2> <a href="<?php the_permalink(); ?>" <?php the_title(); ?></a> </h2> |
Empieza con el título del post que se compone de un <h2> y en su interior un vínculo. El vínculo tiene una URL al post el concreto sacado con la función the_permalink() y el título del post se obtiene con la función the_title().
1 |
<?php echo get_post_meta($post->ID, 'PostThumb', true); ?> |
Se obtiene la imagen destacada del post (thumb).
1 2 3 4 |
<p class="meta"> <span>Publicado el </span> <?php the_time('F jS, Y'); ?> <span>por</span> <?php the_author(); ?> </p> |
Este <p> contendrá la información referente a la fecha de publicación (the_time()) y autor (the_author()).
1 |
<?php the_content('Leer más'); ?> |
A continuación, con la función the_content() se muestra un pequeño extracto del contenido. El string ‘leer más’ será el texto de un vínculo que llevará al post completo.
1 2 3 4 5 6 |
<p> <?php the_tags('Tags: ', ',' , '<br/>'); ?> Publicado en <?php the_category(', '); ?> <?php comments_popup_link('Sin comentarios', '1 Comentario', '% Comentarios'); ?> </p> </div> |
Para finalizar el post se crea un elemento <p> que contiene las etiquetas del post sacadas con la funcion the_tags(). Está función cuenta con 3 parámetros que escriben contenido:
- Antes de la etiqueta
- Entre etiquetas
- Final de la etiqueta
Luego se muestran las categorías con la función the_category(). El parámetro consta de una string o cadena de texto que separa las categorías, en este caso es una coma.
Y para finalizar se muestran el número de comentarios y el cierre del <div> post . Los parámetros de la función comments_popup_link() son los diferentes textos que se muestran en las situaciones de:
- 0 comentarios.
- Al menos 1 comentario.
- Haber más de un comentario.
1 2 3 4 |
<?php endwhile; ?> <?php else : ?> <h2>No hay posts que mostrar</h2> <?php endif; ?> |
El final del código consta del cierre del bucle while y en caso de no haber post que mostrar imprime un mensaje.
Todo el código del loop quedaría de la siguiente manera
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <div class="post" id="post-<?php the_ID(); ?>"> <h2> <a href="<?php the_permalink(); ?>" <?php the_title(); ?> </a> </h2> <?php echo get_post_meta($post->ID, 'PostThumb', true); ?> <p class="meta"> <span>Publicado el </span> <?php the_time('F jS, Y'); ?> <span>por</span> <?php the_author(); ?> </p> <?php the_content('Leer más'); ?> <p> <?php the_tags('Tags: ', ',' , '<br/>'); ?> Publicado en <?php the_category(', '); ?> <?php comments_popup_link('Sin comentarios', '1 Comentario', '% Comentarios'); ?> </p> </div> <?php endwhile; ?> <?php else : ?> <h2>No hay posts que mostrar</h2> <?php endif; ?> |
El have_posts() funciona mediante una consulta que emplea una serie de parámetros recibidos. Para que sepas que parámetros va a utilizar para realizar una consulta puedes insertar la siguiente línea antes de un loop.
1 |
<?php global $query_string; echo $query_string; ?> |
En el caso de que lo uses en el archive.php podría mostrar algo así:
posts_per_page=10&what_to_show=posts&orderby=date&order=DESC&category_
name=wordpress
Vendría a ser mostrar 10 post por página en orden descendente por fecha y con la categoría wordpress.
Y hasta aquí el post de hoy, espero que os haya sido ameno. A Seguir picando 🙂