El loop de WordPress, qué es y cómo usarlo

El loop de WordPress, qué es y cómo usarlo

Todos conocemos las bondades de WordPress, es una poderosa herramienta bajo la que corre más del 30% de todas las páginas web del mundo. En este CMS se pueden crear desde sitios informativos, pasando por portafolios, blogs y hasta tiendas virtuales, la verdad es una plataforma muy flexible. Hoy discutiremos acerca de el loop de WordPress, una herramienta vital para este poderoso CMS.

Pero ¿por qué es tan popular? pues bien, uno de sus puntos más fuertes es que su interfaz es muy amigable, puedes crear contenidos llamativos muy rápidamente, agregar imágenes y videos prácticamente como si lo hicieras desde Word Office, y no solo eso, también es amigable con los motores de búsqueda lo que la hace una plataforma perfecta para el SEO.

El otro punto más fuerte de WordPress tiene que ver con su sistema de templates o plantillas, ya que también es muy sencillo mostrar la información que creaste en el administrador usando el Loop.

¿Qué es el loop de WordPress?

Según el mismísimo codex de WordPress, el loop es básicamente un código PHP usado para mostrar información de un post, lo que significa que podemos extraer cualquier pieza de contenido del post que creaste desde el administrador, esto incluye:

  • Título
  • Contenido (texto, imágenes, video)
  • Fecha de creación
  • Fecha de modificación
  • ID del post
  • Slug
  • Categoría
  • Etiquetas
  • Imagen destacada
  • Extracto
  • Comentarios
  • Campos personalizados
  • y mucha más información

Cabe anotar que el loop de WordPress funciona dependiendo de un contexto, por ejemplo, si el loop es llamado en una plantilla single.php que es la encargada de mostrar un post, el loop funcionará en el contexto del post trayendo la información específica de ese post.

El Loop se ve más o menos así:

<?php 
if ( have_posts() ) {
	while ( have_posts() ) {
		the_post(); 
		//
		// Etiquetas de template
		//
	} // end while
} // end if
?>

En el código anterior el método have_posts() revisa en la base de datos si hay información para el post que queremos mostrar y si hay alguna, comienza a iterar en ella. El método the_post() prepara toda la información del contenido desde la base de datos respetando un índice.

Gato sorprendido por explicación del loop de WordPress

No te preocupes si aún no entiendes de lo que estamos hablando, el código es un camino de práctica, por lo que te recomendamos seguir leyendo el post.

Tutorial recomendado

Crea tu portafolio con HTML y CSS

Aprende los conceptos básicos de HTML y CSS mientras creas tu propio portafolio desde cero.

¡Quiero aprender!

Etiquetas para usar dentro del loop de WordPress

El Loop de WordPress cuenta con la habilidad de modificar ciertas etiquetas especiales para usarlas cuando se está iterando en los datos, estas etiquetas brindan información específica del contenido guardado en la base de datos por ejemplo:

  • the_title(): devuelve el título
  • the_content(): devuelve el contenido
  • the_post_thumbnail(): devuelve la imagen destacada
  • the_date(): devuelve la fecha de creación del artículo
  • the_excerpt(): devuelve un extracto del contenido

Puedes revisar la lista completa de etiquetas en el codex de WordPress

Para imprimir el título de un artículo en el archivo single.php sería de la siguiente manera:

<?php 
if ( have_posts() ) {
	while ( have_posts() ) {
		the_post(); 
		echo ‘<h1>’;
                the_title();
                echo ‘</h1>’;
	} // end while
} // end if
?>

El contexto del loop de WordPress

Como ya te comenté antes, el Loop trae información por defecto dependiendo de su contexto, por ejemplo si lo invocas desde una archivo de categoría traerá todos los post pertenecientes a esa categoría. Si lo invocas en el archivo index.php de tu plantilla traerá los post más recientes y si lo invocas en un archivo single mostrará la información de un solo artículo.

¿Pero cómo modificar el Loop si quiero sólo ver los post de una categoría, o si quiero reordenar por orden alfabético los post? es allí donde se hace importante averiguar de los querys personalizados del Loop, más conocidos com WP_Query.

Alterando el Loop de WordPress con WP_Query()

En muchas ocasiones el Loop por defecto no es suficiente, a veces queremos excluir ciertos post, ordenarlos diferentes o filtrarlos de alguna manera para traer información específica. Por suerte WordPress provee una manera muy sencilla de hacerlo a través de WP_Query().

Pongamos un ejemplo, tenemos un blog de tecnología y en él hay muchas categorías. El problema es que sólo queremos mostrar los post de la categoría “Android”, el código se vería más o menos así:

<?php $android_query = new WP_Query( 'category_name=android' );

if ( $android_query->have_posts() ) {
	while ( $android_query->have_posts() ) {
		$android_query->the_post(); 
		echo ‘<h1>’;
                the_title();
                echo ‘</h1>’;
	} // end while
} // end if
?>

En el código anterior lo que hice fue crear la variable $android_query la cual contenía un nuevo WP_Query con el parámetro ‘category_name=android’, lo que se traduce como “trae todos los post de la categoría android”. Luego en el Loop de WordPress pasamos esa variable y aplicamos el método have_post() para verificar si ese query tiene información y seguimos iterando en ella.

Para ver la lista completa de filtros y parámetros puedes ir al codex de WordPress.

Algunos ejemplos del uso del loop de WordPress

Obtener los 3 post más recientes de una categoría

<?php
$args = array(
    'category_name' => 'news',
    'posts_per_page' => 3
);
 
$my_query = new WP_Query( $args );
 
if ( $my_query->have_posts() ) {
 
    while ( $my_query->have_posts() ) {
 
        $my_query->the_post();
 
        // Etiquetas de template: ej: the_title().
 
    }
}
 
wp_reset_postdata();
?>

Obtener todos los post del año actual para un autor

<?php
 
// Obtiene el año actual.
$current_year = date( 'Y' );
 
$args = array(
    // Consulta por el nombre de autor “John”.
    'author' => 'john',
    // Obtiene los post de este año.
    'year'   => $current_year
);
 
$my_query = new WP_Query( $args );?>

Mostrar los post ordenados por cantidad de comentarios

<?php
 
$args = array(
    // Ordena por cantidad de comentarios.
    'orderby' => 'comment_count'
);

$my_query = new WP_Query( $args ); 
?>

Como ves, es muy fácil mostrar la información de tus post de la manera que quieras con WordPress y su maravilloso Loop. Te aconsejo practicar y tomarlo con calma si algo te falla, de cualquier modo te invito a comentar si tienes algún problema o simplemente para comentar qué te ha parecido este post. Nos vemos en el próximo.