WordPress vous donne la possibilité de modifier la date de publication d’un article et il vous fournit get_the_date() pour la récupérer facilement sur le frontend. Mais que se passe-t-il si, pour une raison quelconque, vous voulez accéder à la date réelle à laquelle l’article avait été créé, au lieu de celle que vous avez définie manuellement ?

Apparemment, WordPress conserve la clé méta _wp_old_date qui stocke l’ancienne date chaque fois qu’elle change. Vous pouvez facilement la récupérer en utilisant get_post_meta(). Ainsi, l’écho de get_post_meta( get_the_ID(), '_wp_old_date' ); vous donnera un tableau avec toutes les anciennes dates:

array (size=3) 0 => string '2020-03-14' 1 => string '2020-03-21' 2 => string '2020-03-11'

Selon la documentation, get_post_meta() accepte un troisième paramètre optionnel qui, s’il est défini à true, ne retournera que la première valeur. Ainsi, nous pouvons facilement obtenir la date de création du message simplement en utilisant get_post_meta( get_the_ID(), '_wp_old_date', true );.

Voici le piège, cependant : si vous n’avez jamais changé la date du message, _wp_old_date sera vide. Pour y faire face, nous devons vérifier si _wp_old_date est vide et si c’est le cas, nous nous rabattons sur notre get_the_date() familier. S’il a une valeur, nous pouvons la retourner, en gardant à l’esprit deux choses:

  1. Nous voudrions probablement maintenir le format d’affichage qui est défini par l’Admin sur les options de WordPress. Nous pouvons récupérer cela avec un simple get_option( 'date_format' ).
  2. Nous devrions également utiliser date_i18n, pour nous assurer que nous récupérons la date dans un format localisé.

Donc, au final, une fonction plus évolutive ressemblerait probablement à quelque chose comme ça:

function get_creation_date( $entry_id = '' ) { $post_id = $entry_id ? $entry_id : get_the_ID(); $old_date = get_post_meta( $post_id, '_wp_old_date', true ); return $old_date ? // If the old date exists date_i18n( get_option( 'date_format' ), // Retrieve the date in localized format strtotime( $old_date ) ) : // and use the display format set on WordPress options get_the_date(); // else, use get_the_date()}

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.