PHP Snippets WordPress

Fechas más amigables en WordPress

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&iacute;a');
        else
            $since = sprintf( __('%s d&iacute;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.

Deja un comentario

13 Comentarios

  • Información Bitacoras.com…

    Valora en Bitacoras.com: 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……

  • 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

  • Gracias por el aporte, yo soy nuevo en esto…
    tengo una pregunta….
    como le haces para que cambie de idioma??? ya que yo lo puse pero me lo pone en ingles
    gracias y saludos

  • […] › Fechas más amigables en BloggerEnglish PortuguêsTal como mencionamos en "Fechas más amigables en WordPress", colocar fechas relativas o el tiempo transcurrido entre dos fechas (ejemplo: Publicado hace […]

  • Hola como le pones el mensaje “Continuar leyendo”. Esta muy bueno los aportes que realizan en la pagina.

    Beso

  • […] Blogger has been compressed to load faster.You can also find the PHP version on the article "Friendlier Dates on WordPress" (spanish).Related postsCustomize the way date is shown on Blogger (1)Use Google Sitemap on […]