Modifier human_time_diff () pour raccourcir «jours» en «d» et «heures» en «h», etc.

4

J'utilise la fonction echo time_ago () qui affiche l'heure comme ceci:

il y a 5 jours quel est le meilleur moyen de le remplacer par il y a 5j ?

Mes recherches m'ont conduit à la fonction human_time_diff () située dans "formatting.php". J'ai donc essayé de modifier directement la fonction située dans /wp-includes/formatting.php, mais lorsque je change "heures" "h" , etc., cela devient fou et me donne des erreurs. Je sais que modifier le noyau n'est pas la meilleure solution, alors des idées? Je vous remercie.

    
posée Pwn 30.04.2011 - 10:16

1 réponse

6

Il n'y a pas de filtre pour la sortie de cette fonction. Vous pouvez le copier / renommer / le modifier ou ajouter un wrapper qui remplacera les chaînes en sortie comme ceci:

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

Après coup, les chaînes de caractères sont localisées, ce qui permet d'utiliser un filtre de traduction ... Mais les éléments à remplacer sont trop génériques et risquent de ne pas être utilisés ailleurs.

MISE À JOUR

Depuis WP 4.0, un filtre est disponible pour 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 );
    
réponse donnée Rarst 30.04.2011 - 11:54

Lire d'autres questions sur les étiquettes