WordPress : afficher la date en français dans le thème (sans utiliser le pack de langue ou setlocale())

Wordpress icon

Cela fait des années que j’utilise le même thème graphique pour mon site et je n’ai jamais vraiment pris le temps de traduire la date de publication ou de mise à jour des articles en français.

Le tutoriel qui suit ne s’adresse qu’à un cercle réduit de développeurs : il est évidemment bien plus aisé d’installer WordPress en français (avec le langage pack qui convient) ou d’utiliser la fonction PHP setlocale() comme je l’avais fait précédemment avec WP-Date FR.

Dans mon cas bien précis, je n’ai pas accès aux locales étant donné que le serveur est installé en anglais.

Je ne souhaite pas non plus installer la locale française, qui serait alors ajoutée à tous mes paquets Debian.

Et je ne souhaite pas non plus utiliser la traduction française de WordPress. It’s coding time !

La fonction sky_date_french()

Vous pouvez placer cette fonction dans le fichier functions.php de votre thème :

/*
|-----------------------------------------------------------------------
| Sky Date in French by Matt - www.skyminds.net
|-----------------------------------------------------------------------
|
| Returns or echoes the date in French format (dd/mm/YYYY) for WordPress themes.
|
*/
function sky_date_french($format, $timestamp = null, $echo = null) {
	$param_D = array('', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim');
	$param_l = array('', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche');
	$param_F = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
	$param_M = array('', 'Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Jun', 'Jul', 'Aoû', 'Sep', 'Oct', 'Nov', 'Déc');
	$return = '';
	if(is_null($timestamp)) { $timestamp = mktime(); }
	for($i = 0, $len = strlen($format); $i < $len; $i++) {
		switch($format[$i]) {
			case '\\' : // fix.slashes
				$i++;
				$return .= isset($format[$i]) ? $format[$i] : '';
				break;
			case 'D' :
				$return .= $param_D[date('N', $timestamp)];
				break;
			case 'l' :
				$return .= $param_l[date('N', $timestamp)];
				break;
			case 'F' :
				$return .= $param_F[date('n', $timestamp)];
				break;
			case 'M' :
				$return .= $param_M[date('n', $timestamp)];
				break;
			default :
				$return .= date($format[$i], $timestamp);
				break;
		}
	}
	if(is_null($echo)) { return $return;} else { echo $return;}
}

Fonctionnement

La fonction sky_date_french($format, $timestamp = null, $echo = null) prend 3 arguments :

  • $format : le format standard de la fonction PHP date(). Ici, nous utiliserons 'l d F Y'.
  • $timestamp : la date au format GMT. Sous WordPress, nous utiliserons get_post_time('U', true)
  • $echo : si $echo est défini, on affiche le résultat, sinon on le renvoie simplement.

Nous utiliserons donc la fonction comme ceci :

sky_date_french('l d F Y', get_post_time('U', true), 1);

Les fichiers du thème

J’ai modifié les fichiers suivants : front-page.php, index.php, single.php, page.php et archive.php.

Dans la plupart de ces fichiers, j’ai remplacé :

the_time('l d F Y');

par

sky_date_french('l d F Y', get_post_time('U', true), 1);

Certains de mes fichiers affichent aussi la date de dernière mise à jour. Voici le code complet :

<section class="post-date updated"><!-- Metadata --> <time datetime="<?php the_time('c'); ?>"><!--?php sky_date_french('l d F Y', get_post_time('U', true), 1); echo " à  "; the_time('H:i'); ?--></time> par <span class="vcard author"><span class="fn"><!--?php the_author_posts_link(); ?--></span></span>. <!--?php $u_time = get_the_time('U');
$u_modified_time = get_the_modified_time('U');
if ($u_modified_time -->= $u_time + 86400) { ?>Dernière mise à jour le <time datetime="<?php the_modified_time('c'); ?>"><!--?php sky_date_french('d F Y', get_the_modified_time('U', true), 1); ?--></time> <!--?php } ?--></section>

Et voilà, c’était juste pour le sport finalement mais la date est maintenant francisée.

Recherchez-vous un expert WordPress ou WooCommerce sur qui vous pouvez compter? Ne cherchez plus.

Faites confiance à mon expertise »

Articles conseillés :

Opinions