Modificar human_time_diff () para acortar "días" a "d" y "horas" a "h", etc.

4

Estoy usando la función echo time_ago () que muestra el tiempo como este:

Hace 5 días ¿cuál es la mejor manera de cambiarlo a 5d ago ?

Mi investigación me llevó a la función human_time_diff () ubicada en "formatting.php" Así que intenté editar directamente la función ubicada en /wp-includes/formatting.php pero cuando cambio "hours" a "h" y así sucesivamente ... se vuelve loco y me da errores. Sé que modificar el núcleo no es la mejor manera, ¿alguna idea? Gracias.

    
pregunta Pwn 30.04.2011 - 10:16

1 respuesta

6

No hay filtro para la salida de esa función. Puede bifurcarlo (copiarlo / renombrarlo / editarlo) o agregar una envoltura que reemplazará las cadenas en la salida de esta manera:

function short_time_diff( $from, $to = '' ) {

    $diff = human_time_diff($from,$to);

    $replace = array(
        'hour'  => 'h',
        'hours' => 'h',
        'day'   => 'd',
        'days'  => 'd',
    );

    return strtr($diff,$replace);
}

Pensamiento posterior de PS: en realidad, las cadenas están localizadas, por lo que hay un filtro de traducción para usar ... Pero las cosas para reemplazar son genéricas y eso podría provocar que se rompa en otra parte.

ACTUALIZAR

Desde WP 4.0 hay un filtro disponible para human_time_diff :

add_filter( 'human_time_diff', function($since, $diff, $from, $to) {

    $replace = array(
        'hour'  => 'h',
        'hours' => 'h',
        'day'   => 'd',
        'days'  => 'd',
    );

    return strtr($since, $replace);

}, 10, 4 );
    
respondido por el Rarst 30.04.2011 - 11:54

Lea otras preguntas en las etiquetas