Wordpress iconCela 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 :

A lire :  MySQL : convertir les tables MyISAM au format InnoDB
  • $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'); ?>" itemprop="datePublished"><?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'); ?>" itemprop="dateModified"><?php sky_date_french('d F Y', get_the_modified_time('U', true), 1); ?></time>
<?php } ?>
</section><!-- Metadata Ends -->

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

Pour développer votre projet WordPress ou Woocommerce, faites appel à mon expertise pour réaliser un site rapide, performant et fonctionnel.

Contactez-moi

Si vous avez trouvé une faute d’orthographe, informez-nous en sélectionnant le texte en question et en appuyant sur Ctrl + Entrée s’il vous plaît.

Articles en rapport:

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

par Matt Lecture: 2 min
0

Pin It on Pinterest

Share This

Spelling error report

The following text will be sent to our editors: