Cómo crear tus propios temas para WordPress

Creando un tema desde cero para WordPress parte 3: El loop

El loop es el “mecanismo” que WordPress usa para mostrar información a través de las plantillas. Es donde ocurre la “magia” y tenemos acceso a la información de nuestros posts.

loop

El loop básico tiene la siguiente estructura:

<?php

if ( have_posts() ) :
    while ( have_posts() ) : the_post(); ?>
        ... Mostramos el contenido de nuestro(s) post(s)
    <?php endwhile;
endif;

Si estas en la plantilla category.php, el loop te devolverá por defecto la información de tus 10 últimos posts. Si estás en single.php o en page.php te devolverá la información de ese post concreto.

have_posts() comprueba si en la página actual hay posts. Si hay posts, el bucle while se ejecuta mientras haya posts (puede ser uno en caso de páginas de detalle como por ejemplo page.php, single.php o varios en páginas de listado como category.php, search.php, archive.php, etc…). La función the_post() es la que recoge la información sobre el post actual dentro del bucle while.

Normalmente se suele poner un mensaje de “no se han encontrado resultados” en caso de que no encuentre posts, por lo que el loop quedaría algo tipo:

<?php

if ( have_posts() ) :
    while ( have_posts() ) : the_post();?>
        <h1><?php the_title();?></h1>
        <?php the_content();
    endwhile;
else :
    _e( "No se han encontrado resultados", "tu-textdomain" );
endif;

¿Qué puede mostrar el loop?

Estas son algunas de las funciones disponibles dentro del loop y que nos devuelve información sobre el post, page o Custom Post Type actual:

  • next_post_link(): Enlace al siguiente post publicado cronológicamente
  • previous_post_link(): Enlace al anterior post publicado cronológicamente
  • the_category(): La categoría o categorías asociadas al post actual
  • the_author(): El Autor del post actual
  • the_content(): El contenido principal del post actual
  • the_excerpt(): El extracto del post actual
  • the_post_thumbnail(): La imagen destacada del post actual
  • the_ID(): El ID del post actual
  • the_meta(): Los campos personalizados asociados al post actual
  • the_shortlink(): El enlace corto del post actual
  • the_tags(): La etiqueta o etiquetas asociadas al post actual
  • the_title(): El título del post actual
  • the_time(): La fecha en la que se ha creado el post actual

Además, podemos usar conditional tags para por ejemplo maquetar nuestro contenido o añadir clases específicas según nuestras necesidades:

  • is_home(): Devuelve true si la pagina actual es la home
  • is_admin(): Devuelve true si un administrador está logueado y visitando la página
  • is_single(): Devuelve true si la pagina actual es el detalle de un post
  • is_page(): Devuelve true si la pagina actual es el detalle de una página
  • is_page_template(): Devuelve true si la pagina actual es una plantilla específica, por ejemplo: is_page_template(‘page-contact.php’)
  • is_category(): Devuelve true si la pagina actual es una categoría. Puede especificarse una en concreto, por ejemplo: is_category(‘noticias’)
  • is_tag(): Devuelve true si la pagina actual es una etiqueta
  • is_author(): Devuelve true si la pagina actual es el detalle de autor o si un autor específico está visitando la página
  • is_search(): Devuelve true si la pagina actual es la página de resultados de búsqueda
  • is_404(): Devuelve true si la pagina actual es página no encontrada o página no existe
  • has_excerpt(): Devuelve true si la pagina o post actual tiene extracto

Esto es en esencia el loop de WordPress. Tenemos también funciones para interactuar con él o modificarlo a nuestro antojo como query_posts(), rewind_posts()…y varios hooks para crear nuestras propias funciones y engancharnos a ellos como pre_get_posts, the_post y found_posts.

¿Te ha resultado útil esta información? 🍺

Si este post te ha resuelto un problema, invítame a un café o a una cerveza. Con este pequeño gesto me animas a seguir escribiendo.

Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *:

  • El fin del tratamiento es únicamente la moderación de comentarios para evitar spam
  • La legitimación es tu consentimiento al comentar
  • No se comunicará ningún dato a terceros salvo por obligación legal
  • Tienes derecho al acceso, rectificación y eliminación de los comentarios