WordPress : Afficher des dates relatives comme sur Facebook ou Twitter

Dans la plupart des cas, l’affichage des articles (ou commentaires) sur WordPress se fait de façon classique (absolu) sous le format jour/mois/année avec la fonction get_date(). S vous souhaitez changer cela en optant pour les dates relatives comme sur Facebook ou Twitter (Article publié il y a 2 jours, 1 semaine etc.) il faut utiliser une fonction dédiée.

WordPress intègre une fonction peu utilisée à savoir human_time_diff() qui permet d’implémenter la date relative dans les publications de son blog.

L’utilisation de cette fonction est très simple : human_time_diff( $from, $to ) avec $from la date de publication d’un article ou un commentaire par exemple et $to correspond à la date actuelle.

Concrètement sur la page single.php de notre thème par exemple on va changer la date de publication des articles en changeant la ligne contenant the_date() par :

<?php
$dateRelative = human_time_diff(get_the_time('U'), current_time('timestamp'));
echo 'Article publié il y a ' . $dateRelative;
?>

Une autre façon d’implémenter cette fonctionnalité consiste à afficher la date relative des articles pendant une durée de 90 jours par exemple et d’afficher la date absolu dans le cas contraire.

<?php
// Utilisation : echo dt_human_time_diff(90);
function dt_human_time_diff( $duration = 90 ) {
 
    $post_time 	= get_the_time('U');
    $human_time = 'Article plublié ';
    $now_time 	= date('U');

    // Afficher la date relative si la date de publication est inférieure à $duration (90 jours par défaut)
    $post_anterieur = $now_time - ( 60 * 60 * 24 * $duration );
    if ( $post_time >  $post_anterieur) {
        $human_time .= 'il y a '. human_time_diff( $post_time, current_time( 'timestamp' ) ) ;
    } else {
        $human_time .= 'le '. get_the_date();
    }
 
    return $human_time;
}
?>