Advertisement
  1. Code
  2. WordPress

Mostrar la fecha y la hora en el bucle de WordPress

by
Read Time:5 minsLanguages:

Spanish (Español) translation by Eva Collados Pascual (you can also view the original English article)

Añadir la fecha y la hora en el "loop" o bucle de WordPress parece una tarea fácil, ¿cierto?

Bueno, sí lo es. Basta escribir el código de una sencilla etiqueta de plantilla y dejar que WordPress haga el resto del trabajo por ti. Pero en ocasiones puedes toparte con problemas.

En este rápido consejo, te mostraré las distintas funciones que nos proporciona WordPress para mostrar la fecha y la hora e indicaremos cuáles usar si te topas con problemas.

Las etiquetas de plantilla disponibles

WordPress nos proporciona cuatro funciones para mostrar la fecha y/o la hora. Son las siguientes:

  • the_date(): De forma predeterminada mostrará la fecha de la entrada en formato F j, Y, así que si la entrada se publicó el 20 de noviembre de 2018, mostrará Noviembre 20, 2018.
  • get_the_date(): Esto extrae la fecha, pero no la muestra. Para hacerlo, usarías echo get_the_date(), lo que te dará el mismo resultado que the_date(). Es útil cuando ya estás usando echo en tu código. También te puede ayudar a resolver el problema cuando las fechas no se están mostrando, algo que veremos dentro de poco.
  • the_time() y get_the_time(): Estas extraen de forma predeterminada la hora, pero si especificas el formato de la fecha, también puedes incluirla. Podrías incluso usarlas para mostrar sólo la fecha si configuraste el formato para que lo haga, pero tendría más sentido usar the_date() o echo get_the_date().

Formatear la fecha

Cada función tiene un formato predeterminado, pero lo puedes sobrescribir si lo necesitas. Para hacerlo, tendrás que usar formatos PHP de fecha y hora estándar.

Aquí tienes algunos ejemplos, todos para una entrada publicada el 20 de noviembre de 2018.

  • the_date() mostrará noviembre 20, 2018 por defecto.
  • echo get_the_date( l, S M Y ) mostrará martes, 20 nov 2028.
  • the_time( 'g:i a' ) mostraría 2:03 pm.
  • echo get_the_time( 'G:i' ) mostraría 14:03.
  • the_time( 'g:i a, D, j F y' ) mostraría 2:03 pm, mar, 20 noviembre 18.

Solucionar los problemas con las fechas en el bucle: Fechas que no aparecen en la página de archivo

Si estás usando the_date() para mostrar las fechas en una página de archivo, y descubres que la fecha no aparece en algunas entradas, esto sucede porque the_date() no repite la fecha en entradas consecutivas publicadas durante la misma jornada que su antecesora.

En ocasiones podrías desear mantener este comportamiento, en caso de que no quieras repetir la fecha en cada entrada publicada durante ese mismo día.

Pero si quieres asegurarte de que todas las entradas muestran su fecha acompañando al título y cualquier otro contenido que estés presentando, tendrás que usar otra función. Puedes usar cualquiera de las tres anteriores funciones.

La opción más simple es sustituir the_date() por echo get_the_date(). Si quieres añadir la hora, tanto the_time() como echo get_the_time() funcionarán.

Nota: Si estás desconcertado por el hecho de que the_date() ocasione este problema y sin embargo the_time() no lo haga, esto se debe a que las entradas publicadas en una misma fecha no se publicaron a la misma hora. Tendrías que hacer un gran esfuerzo, bien programando las entradas, o editando la hora de las publicaciones, ¡o coordinando a dos bloggers para que esto ocurriera!

Tuve este problema en la plantilla de página de inicio de un tema que codifique para un cliente. En esta plantilla existían varios bucles, cada uno para un tipo de contenido distinto del sitio y todo estaba codificado usando WP_Query. El problema no fue evidente hasta el día en que añadieron dos entradas (algo que no suelen hacer). Se sorprendieron al ver que la fecha de la segunda entrada no aparecía en la página de inicio y no pararon de editarla, refrescarla y republicarla hasta que se dieron por vencidos y me preguntaron.

Aquí tienes el código original:

He editado la función de forma que ahora tiene el siguiente aspecto:

En la línea que empieza con li class="home newsletter", he sustituido the_date( 'j, F' ) por echo get_the_date( 'j, F' ). Esto solucionó el problema.

Así que, si alguna vez has descubierto que hay fechas que no se muestran en tus archivos, esta podría ser la solución.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.