Últimamente cada vez veo más una bonita forma de expresar la fecha de creación de un post: ‘Hace X días’ o ‘hace X minutos’. Creo que además de ser más legible muestra una referencia del tiempo más cercana para el lector, que de un simple vistazo podrá apreciar si la web ha sido actualizada hoy mismo.
Wordpress nos ofrece una función muy fácil de usar: human_time_diff ( $from, $to )
. El primer parámetro, $from
, es la fecha más lejana y el segundo, $to
, es la fecha más cercana a hoy. Wordpress calcula la diferencia de tiempo y devuelve directamente una cadena del estilo ‘X días’ o ‘X minutos’. Prácticamente no tenemos que hacer nada, excepto que dichas fechas tienen que estar en formato Unix.
Para hacerlo, el parámetro $from
será la fecha de creación del post y el $to
será la fecha actual. En el Códex viene bien explicado:
echo human_time_diff( get_the_time('U') , current_time('timestamp') );
get_the_time('U')
obtiene la fecha de creación del post (tendremos que estar dentro del Loop para ejecutarla) en formato Unix y current_time('timestamp')
la fecha actual también en formato Unix. Tal y como hemos dicho, esta sentencia devuelve una cadena de tipo ‘hace X días/minutos’.
Bueno, esto no está nada mal pero hagámoslo bien, bien. Para que todas las fechas en nuestra web salgan de esta manera usaremos el filtro the_time
si en nuestras plantillas estamos usando la función the_time()
. Si estamos mostrando las fechas mediante la función get_the_time()
, usaremos el filtro get_the_time
:
$time = human_time_diff( get_the_time('U') , current_time('timestamp') ); echo sprintf( __( 'hace %s', 'dominio' ), $time );
De esta forma, en todos nuestros posts aparecerá la fecha en el formato más legible.
En el código utilizo la función __()
ya que es necesaria si luego quisiéramos traducir nuestro tema ( es una buenísima práctica y aconsejo hacerlo siempre, incluso si no vamos a traducirlo).
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Hola, a mí me gustaría hacer justo lo contrario. Que mis post aparezcan como fechas y no con la indicación «X días ago». Podrías explicarme cómo hacerlo? Muchas gracias!