Date de publication

is_new_day(), quel jour sommes-nous ?
La fonction de la semaine n°2

Quand on travaille sur WordPress, on tombe parfois sur des fonctions méconnues. Aujourd’hui, je décortique donc la fonction is_new_day() pour savoir si aujourd’hui est un nouveau jour. Oui, je sais, c’est la question que l’on se pose tous les jours…

A quoi sert is_new_day ?

En réalité, je ne faisais pas de blagues, puisque c’est ainsi qu’est présenteé la fonction sur le site officiel de WordPress :

This Conditional Tag checks if today is a new day

Ce n’est qu’en creusant un peu que l’on comprends à quoi sert réellement ce tag conditionnel.

is_new_day() permet de savoir si la date de l’article en cours est différente du précédent dans la boucle. L’intérêt est simple : pouvoir déclencher une action ou changer une mise en page dès que l’article suivant dans la liste est publié à une date différente.

Par exemple, vous publiez 3 articles aujourd’hui et 3 demain. Avec is_new_day(), vous allez pouvoir détecter facilement dans la boucle le changement de date pour modifier l’affichage et mettre une séparation graphique entre ces deux ensembles d’articles. Ce n’est qu’un exemple mais je suis sûr que vous comprenez maintenant à quoi elle sert. Et pour que cela soit plus concret, voici un site qui pourrait justement y faire appel : Secrets2moteur est un site d’actualité sur le référencement (vous trouverez mon compte ici) dont les articles s’affichent par date. La fonction is_new_day( pourrait donc très bien être utilisée pour détecter un changement de date et l’afficher à ce moment-là.

Is_new_day()
Un exemple de site où l’image serait pertinente

is_new_day vous veut du mal

La fonction est intéressante dans certains cas de figure, d’une part car tous les sites n’ont pas forcément besoin de changer l’affichage lors d’un changement de date, mais d’autre part car la fonction a deux défauts.

Le premier est que is_new_day() ne fonctionnera que dans des listes de publications. Elle s’utilise donc sur l’accueil du site, dans les catégories, les pages auteurs, les mots-clé, les archives par dates et toute autre page de taxonomie. Mais en soit, impossible de l’utiliser dans le cœur d’un article, d’une page ou de l’un de vos custom post type (sauf en sidebar si vous listez des articles dans un loop secondaire).

Le deuxième défaut, c’est que is_new_day() ne fonctionnera que si votre thème utilise la fonction the_date.
Je m’explique : voici ci-dessous le code de la fonction is_new_day().

function is_new_day() {
 global $currentday, $previousday;
 if ( $currentday != $previousday )
 return 1;
 else
 return 0;
 }

$currentday est une variable globale récupérée automatiquement dans la boucle avec la date de l’article visionnée (jusque là tout va bien). Mais $previousday est une variable globale uniquement déclarée dans the_date(). Donc sans utiliser cette dernière fonction, le tag conditionnel renverra toujours vrai, et dans ce cas is_new_day() ne servira à rien.

En d’autres termes, is_new_day() peut être utile dans certains cas, à condition de comprendre à quoi elle peut servir…

Photo Credit: arquera

Lire la suite

Vous aimez ? Partagez !

8 réflexions sur “ is_new_day(), quel jour sommes-nous ?

  1. Merci Daniel, c’est exactement le but des articles « La fonction de la semaine » que de faire découvrir, décortiquer et expliquer le fonctionnement des fonctions WordPress.
    C’est top, merci pour ta contribution !
    Sinon, pour la fonction, penses-tu qu’on puisse tricher pour l’utiliser autrement, en déclarant nous mêmes les globales ?
  2. : oui, on peut tout à fait tricher pour utiliser cette fonction en déclarant nos globales. Si on est dans le loop, il faudra juste penser à déclarer correctement $previousday. En dehors du loop, il faudra déclarer les deux pour que is_new_day() fonctionne correctement.
  3. Je rejoins assez bien l’idée de Rodrigue, il faut publier très souvent pour trouver un intérêt à cette fonction. Par contre, il serait intéressant de pousser le vis un peu plus loin selon son template qui est compatible ou non avec la fonction the_date.

Envie de dire quelque chose ?

Avant de parler, merci de lire la charte des commentaires.

Utiliser le tag [php][/php] pour ajouter du code ou utilisez un service comme pastebin.com.
Cibler un commentateur avec un "@", merci à Mention Comments Authors !