Date d'un article

Afficher la date de ses articles

Cet article a été réactualisé il y a 3 ans jours. Il n'est pas nécessairement obsolète, mais gardez son ancienneté en tête lors de sa lecture.

Une chose que je trouve indispensable sur un site proposant des articles c’est de fournir au visiteur des infos sur la date de publication d’un billet.

Pourquoi afficher les dates des articles ?

Renseigner sur la « fraicheur » de l’information

Ça peut paraitre une évidence, mais pourtant, il m’ est arrivé de me trouver dans des sites très intéressants au niveau contenu mais pour lesquels j’étais incapable de savoir à quelle date était publié le billet que je lisais ou même si le site était encore maintenu : aucune date nulle part !

En l’occurrence, les sites que je lis souvent ont des contenus relatifs au développement web. Dans ce cas précis, les choses évoluant vite dans le domaine, il est possible qu’une pratique ingénieuse expliquée dans un article à un moment T devienne obsolète quand il arrive effectivement sous les yeux d’un visiteur.

Signaler  la maintenance des articles

Il existe différents types d’articles sur le web. Ceux qui traitent vraiment d’actualités sur lesquels on ne viendra pas faire de modifications à postériori, et d’autres qui peuvent être des tutoriels comme ici.

Dans ce deuxième cas, l’article n’est pas forcément quelque chose de figé. Il peut bénéficier de mises à jour. Alors, en plus d’ indiquer sa date de publication, c’est une bonne chose de faire aussi figurer sa date de révision qui est un indice précieux quant à la « fraicheur » de son contenu au moment où le lecteur le découvre.

Sur Pixiscreen par exemple, des articles pourront être mis à jour pour des compléments d’informations que je peux trouver à postériori, des corrections parce que j’aurai trouvé une façon de faire plus judicieuse … L’intérêt est de conserver un article, l’accès à son url, mais d’être vigilant sur sa possible obsolescence.

Comment faire figurer les dates ?

La date de publication et date de révision des articles dans WordPress est stockée en bdd dans la table wp_post au niveau des champs post_date et post_modifed.

Pour afficher les dates, ajouter ceci dans la boucle de récupération des articles. Dans la boucle afficher les deux dates, ou l’une ou l’autre.

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?> itemscope itemtype="http://schema.org/BlogPosting" role="article">
	//Le titre ...
	
	<!-- date published -->
	<span class="posted-on"><?php _e('Published on', 'flooor-pixiscreen'); ?>
		<time datetime="<?php the_time(get_option('date_format')); ?>" itemprop="datePublished"><?php the_time(get_option('date_format')); ?></time>
	</span>
	<!-- date modified -->
	<?php if (get_the_modified_date() != get_the_date()) : ?>
	<span class="updated-on"><?php _e('Updated on', 'flooor-pixiscreen'); ?>
		<time datetime="<?php the_modified_time('c'); ?>" itemprop="dateModified"><?php the_modified_time('d/m/Y'); ?></time>
	</span>

	<!-- date modified or published  -->
	<?php if (get_the_modified_date() != get_the_date()) : ?>
	<span class="updated-on"><?php _e('Updated on', 'flooor-pixiscreen'); ?>
		<time datetime="<?php the_modified_time('c'); ?>" itemprop="dateModified"><?php the_modified_time('d/m/Y'); ?></time>
	</span>
	<?php else: ?>
	<span class="posted-on"><?php _e('Published on', 'flooor-pixiscreen'); ?>
		<time datetime="<?php the_time(get_option('date_format')); ?>" itemprop="datePublished"><?php the_time(get_option('date_format')); ?></time>
	</span>
	<?php endif; ?>
	
	//Le contenu ...
</article>

Certaines fonctions sont spécifiques à wp, d’autre des fonctions php basiques.

get_the_date() permet de récupérer la date de publication d’un post.

the_time() retourne l’heure à laquelle a été écrit l’article, mais couplé avec get_option('date_format') récupère la date.

get_option() récupère une valeur d’option basée sur son nom, ici le format de date que l’on a choisi dans les réglages du BO.

get_the_modified_date() permet de récupérer la date de mise à jour d’un post.

Comment insérer les dates ?

Le balisage html

On informe sur des dates, donc on utilise la balise <time> à laquelle on ajoute son attribut datetime qui permet d’indiquer la date associée à l’élément.

Les microdonnées

Pour que ces dates soient bien lues par les moteurs de recherche, il est important d’ajouter les microdonnées Schema.org

Ici on est dans un article, d’où l’ajout de :  itemscope itemtype="http://schema.org/BlogPosting"

Puis de : itemprop="datePublished" ou itemprop="dateModified"

Prévenir de l’ancienneté d’un article

Sur certains sites proposant des tutos en développement web, on peut voir un encart qui s’affiche en début d’article lorsqu’il commence à dater un peu précisant que l’article à « tant » d’ancienneté, et qu’il faut le lire en ayant cela en tête (au dev de décider à partir de quand afficher ce type de message).

Je trouve ça bien, on ne pense pas toujours à regarder la date, là, notre attention est attirée sur ce point.

Un plugin de Repository pour alerter sur l’ancienneté d’un article

Geoffrey Croft propose ce type d’implémentation avec son plugin « Juiz Outdated Post Message » qui fonctionne très bien.

Sans plugin

Pour ma part, étant en phase d’apprentissage de création de fonctions et plugins voici ce que j’ai mis en place ici pour le moment.

Ce sera à améliorer, on est dans functions.php du thème pour le moment,  ou plus précisément dans un dossier inc contenant template-functions.php que j’inclue ensuite dans functions.php via un require . Cette façon de procéder me permet de ne pas avoir un functions.php long de plusieurs km !!!

Il faudra que je fasse évoluer ce bout de code, pour en faire un plugin perso ensuite. Je le rajouterai en faisant une MAJ de l’article.

<?php
/**
 * Ajouter un message de péremption d'un article
 */
function vblk_old_post() {
  // Récupération date modif article
  $from = get_the_modified_time( 'U');
  // Récupération date courante
  $to = current_time( 'timestamp' );
  // Différence en secondes
  $diff = (int) abs( $to - $from);

  if ($diff > 31540000) {
  printf( _x( '<p class="old-post">This article was updated %s days ago. It is not necessarily obsolete, but keep his ancestor in mind during the reading.</p>', '%s = human-readable time difference', 'flooor-pixiscreen' ), human_time_diff( get_the_modified_time( 'U' ), current_time( 'timestamp' ) ) );
  }
  // Sup à une journée = sup à 86400sec
  // Sup à une semaine = sup à 604800sec
  // Sup à un mois = sup à 2,628e+6 2628000sec
  // Sup à 6 mois = sup à 1,577e+7 15770000sec
  // Sup à un an = sup à 3,154e+7 31540000sec
}

La fonction human-time-diff() proposée par WP permet de visualiser un résultat plus clair pour la compréhension humaine qu’un résultat en secondes.

Ensuite j’utilise la fonction vblk_old_post() que j’ai créée à l’endroit souhaité de mon template single.php pour l’afficher au dessus du contenu de l’article (dans la boucle). Ici le message ne s’affichera que si mon article n’a pas été réactualisé depuis plus d’un an.

Quelque chose à ajouter ? À votre tour !

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *