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;}
}Code language: PHP (php)

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);Code language: JavaScript (javascript)

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');Code language: JavaScript (javascript)

par

sky_date_french('l d F Y', get_post_time('U', true), 1);Code language: JavaScript (javascript)

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>Code language: HTML, XML (xml)

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

Vous voulez un site WordPress ou WooCommerce qui soit à la fois rapide et performant? Vous êtes au bon endroit.

Découvrez comment je peux booster votre site »

Matt

Matt Biscay est développeur WordPress et WooCommerce certifié chez Codeable, ainsi que sysadmin qualifié et enseignant-chercheur. Passionné par le code performant et les solutions sécurisées, je m'efforce d'offrir une expérience utilisateur exceptionnelle sur chaque projet.

Vous avez aimé cet article ? Vous avez un projet en tête et vous pensez que je pourrais vous aider à le concrétiser ? N'hésitez pas à me contacter, je serais ravi de discuter avec vous de votre projet !

Opinions