Modifique human_time_diff () para encurtar “dias” para “d” e “horas” para “h” etc.

4

Estou usando a função echo time_ago () que exibe a hora assim:

5 dias atrás qual é a melhor maneira de mudar para 5d atrás ?

Minha pesquisa me levou à função human_time_diff () localizada em "formatting.php". Então tentei editar diretamente a função localizada em /wp-includes/formatting.php mas quando mudo "horas" para "h" e assim por diante ... fica maluco e me dá erros. Eu sei que modificar o núcleo não é o melhor caminho, então alguma idéia? Obrigado.

    
por Pwn 30.04.2011 / 10:16

1 resposta

6

Não há filtro para a saída dessa função. Você pode bifurcar (copiar / renomear / editar) ou adicionar wrapper que irá substituir as strings na saída desta forma:

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);
}

Afterthought de PS - na verdade, as strings são localizadas para que haja um filtro de tradução a ser usado ... Mas o material a ser substituído é genérico e isso arrisca quebrá-lo em outro lugar.

UPDATE

Desde o WP 4.0, existe um filtro disponível 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 );
    
por Rarst 30.04.2011 / 11:54

Tags