La fecha en los artículos ayuda al lector a saber cuan fresca es la información y su contexto, en algunas temáticas es un dato imprescindible. El formato normal de una fecha, tipo "6 de Junio de 2010", ya ofrece suficiente información, sin embargo, no es tan rápida de interpretar como una "fecha relativa" estilo "Hace 10 minutos" o "Hace 10 días".
Servicios como Facebook o Twitter usan este formato y WordPress tiene una función sencilla para imprentarlo: human_time_diff().
Actualización: También puedes ver como hacer fechas amigables en Blogger
Fechas amigables en WordPress
Para usarla en los posts
Reemplaza la función que muestra la fecha en todos los archivos de tu theme por:
<?php echo 'Hace '.human_time_diff(get_the_time('U'), current_time('timestamp')); ?></a>
Las funciones que muestran la fecha en el post suelen ser: the_date(), get_the_date(), the_time()
o the_modified_date()
y suele encontrarse en los archivos: single.php, index.php, archive.php, search.php y page.php.
Para comentarios:
Reemplaza la función que muestra la fecha de los comentarios en el archivo comments.php o functions.php por:
<?php echo 'Hace '.human_time_diff(get_comment_time('U'), current_time('timestamp')); ?>
Y las funciones que suelen mostrar la fecha en los comentarios son: comment_date(), get_comment_date(), comment_time()
y get_comment_time()
.
Con esto se habilitan las fechas relativas tanto en entradas como comentarios. En lo personal, solo lo implementé en single.php y functions.php, para comentarios.
Función PHP para obtener el tiempo entre dos fechas
La función que usa WordPress para mostrar el tiempo entre dos fechas en forma de texto es la siguiente:
function human_time_diff( $from, $to = '' ) {
if ( empty($to) )
$to = time();
$diff = (int) abs($to - $from);
if ($diff <= 3600) {
$mins = round($diff / 60);
if ($mins <= 1)
$since = __('1 minuto');
else
$since = sprintf( __('%s minutos'), $mins);
} else if (($diff <= 86400) && ($diff > 3600)) {
$hours = round($diff / 3600);
if ($hours <= 1)
$since = __('1 hora');
else
$since = sprintf( __('%s horas'), $hours );
} elseif ($diff >= 86400) {
$days = round($diff / 86400);
if ($days <= 1)
$since = __('1 día');
else
$since = sprintf( __('%s días'), $days );
}
return $since;
}
Que puede usarse en cualquier otra aplicación PHP que recibe dos parámetros, correspondientes a las fechas de las que se desea conocer la diferencia en tiempo.
Jose, a secas julio 6, 2010 a las 6:07 pm
Hola Francisco. ¿este hack se podría implementar en Blogger?.
Un saludo y gracias 😉
ResponderFrancisco julio 7, 2010 a las 10:45 pm
@Jose, a secas Sí es posible, pero con javascript, me daré un tiempo para ver si puedo sacar una versión para Blogger.
ResponderuFercho julio 6, 2010 a las 6:10 pm
Gracias mi pana primera vez q te escribo pero no es primera vez q me aportas algo te felicito mi pana buen trabajo sigue asi
ResponderFrancisco julio 7, 2010 a las 10:45 pm
@uFercho Gracias por estar por ahí entonces.
Responderrtarrasa julio 7, 2010 a las 8:54 pm
Gracias por el aporte, yo soy nuevo en esto…
Respondertengo una pregunta….
como le haces para que cambie de idioma??? ya que yo lo puse pero me lo pone en ingles
gracias y saludos
Francisco julio 7, 2010 a las 10:46 pm
@rtarrasa Lo hace automáticamente, para ello debes tener tu WordPress en español y con el archivo de idioma actualizado.
ResponderJose, a secas julio 8, 2010 a las 11:20 am
@Francisco: Seguro que lo consigues. Estaré pendiente 😉
Responder@tecnodosis julio 9, 2010 a las 12:39 am
Muy interesante esta entrada
ResponderFlavia julio 12, 2010 a las 3:15 pm
Hola como le pones el mensaje “Continuar leyendo”. Esta muy bueno los aportes que realizan en la pagina.
Beso
Responderlucas abril 24, 2012 a las 6:25 pm
la p** madre, rapidisimo, bueno, y efectivo. muchas gracias !!!! de verdad se los agradezco. 🙂
Responder