index.php y el ‘loop’ de WordPress

En nuestra tercera entrega de esta serie, vamos a ver qué hace el archivo index.php y cómo funciona el famoso ‘loop‘ de WordPress.

Recordemos primero el archivo:

¿Cómo funciona el archivo index.php?

El archivo index.php realiza las siguientes funciones:

  • Carga el archivo de cabecera header.php (mediante get_header();).
  • Comienza la sección con selector ‘main’ (<section id=”main”>).
  • A continuación comprueba si hay artículos (posts) que mostrar (if (have_posts()) ).
  • Inicia el ‘loop’ de WordPress (while (have_posts()) ) con una serie de instrucciones hasta que lo finaliza (endwhile;).
  • En caso que no hubiera artículos que mostrar (else:) lo indica en pantalla (_e(‘No hay entradas .’); ).
  • Finaliza la sección (</section>).
  • Carga el archivo de la barra lateral sidebar.php (mediante get_sidebar() ).
  • Carga el archivo del pié de página footer.php (mediante get_footer() ).

Podemos ver, entonces, que el archivo index.php, por si solo, es suficiente para montar nuestra web en WordPress. De hecho, recordemos que, junto con style.css, era uno de los 2 archivos imprescindibles para que WordPress considerara un tema.

Más adelante estudiaremos las jerarquías de plantillas de WordPress. De momento, sólo nos quedaremos con la idea de que WordPress, cuando no encuentre un archivo de plantilla más adecuado para mostrar la información en pantalla, acabará siempre en última instancia, utilizando el archivo index.php. De ahí su importancia.

Inclusión de archivos header.phpfooter.phpsidebar.php

Estos tres archivos se incluyen en la plantilla mediante las siguientes funciones: get_header(), get_footer() y get_sidebar(). Ahora, vamos a ver qué nos dice el Codex de WordPress acerca de estas funciones:

get_header($name)

Incluye el fichero de plantilla header.php del directorio de tu tema actual. Si se especifica un nombre, entonces se incluye el fichero header-{nombre}.php. Si el tema no tiene un fichero header.php, entonces se incluirá la cabecera por defecto wp-includes/theme-compat/header.php. Generalmente, $name no se incluye.

get_footer($name)

Incluye el fichero de plantilla footer.php del directorio de tu tema actual. Si se especifica un nombre, entonces se incluye el fichero footer-{nombre}.php. Si el tema no tiene un fichero footer.php, entonces se incluirá el pie por defecto wp-includes/theme-compat/footer.php. Generalmente, $name no se incluye.

get_sidebar($name)

Incluye el fichero de plantilla sidebar.php del directorio de tu tema actual. Si se especifica un nombre, entonces se incluye el fichero sidebar-{nombre}.php. Si el tema no tiene un fichero sidebar.php, entonces se incluirá la barra lateral por defecto wp-includes/theme-compat/sidebar.php. Generalmente, $name no se incluye.

SIN EMBARGO, en este último caso principalmente, no es tan frecuente no emplear el parámetro $name de la función. Imaginemos, por ejemplo, que queremos dos barras laterales (izquierda y derecha). Para ello, emplearíamos:

Lo cual incluiría en la plantilla los archivos sidebar-izquierda.phpsidebar-derecha.php.

El famoso ‘loop’ de WordPress

El ‘loop’ de WordPress funciona mediante dos sentencias condicionales (if y else) y dos sentencias de bucle (while y endwhile) de PHP, y dos funciones de WordPress (have_posts() y the_post).

Vamos a ver qué nos dice el Codex WordPress acerca de estas funciones:

have_posts()

Esta función chequea si la actual consulta de WordPress tiene resultados para un bucle. Devuelve verdadero o falso, y no acepta parámetros.

the_post()

Itera el índice de post en el ‘loop’. Devuelve el siguiente post, lo establece y pone la propiedad ‘in the loop‘ en verdadero (en el bucle). No acepta parámetros.

Así, la secuencia

Lo que hace, primero, es comprobar si existen artículos (posts) en la consulta que se le hace en ese momento a WordPress; en caso positivo comienza un bucle para cada post, en el que se ejecutan las sentencias que hayamos dispuesto en el ‘loop’, hasta que se terminan los posts. En caso de que no hubiera ningún post resultado de la consulta, se ejecuta la sentencia después de else. Finalmente, endif finaliza el bloque.

Otra forma de montar este bloque de código sería:

Aquí las sentencias endwhile y endif son sustituidas por el cierre de los corchetes ‘ } ‘.

 

Hasta aquí por ahora. En el próximo artículo veremos como podemos actuar con los posts dentro del ‘loop’.

Una respuesta a “index.php y el ‘loop’ de WordPress”

Deja un comentario

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