Afficher un message d’avertissement en fonction de l’âge d’un article
Découvrez la méthode à suivre pour afficher un message d’avertissement pour les articles susceptibles d’être trop vieux.
Ça a du vous arriver, vous lisez un article, puis vous testez et ça ne fonctionne pas. Vous remarquez après avoir lu l’article qu’il a été publié il y a déjà 2 ans … Si vous ne voulez pas que cela arrive sur votre blog, cette astuce est faite pour vous.
Il vous suffit d’ajouter cette fonction dans le fichier functions.php
de votre thème :
function verif_age_post($periode, $nb){ switch($periode) { case 'jour': $duree = 86400; $add="jours"; break; case 'mois': $duree = 2629743; $add="mois"; break; default: $duree = 31556926; $add="années"; break; } $age = mktime(0,0,0,date('m'),date('d'),date('Y')) - mktime(0,0,0,get_the_time('m'),get_the_time('d'),get_the_time('Y')); if($age > $nb * $duree) { ?> <div class="old-post"> <p class="bold">Cet article a été publié il y a plus de <?php echo(round($age/$duree).' '. $add);?></p> <p> Les informations qu'il vous propose ne sont peut-être plus à jour.</p> </div> <?php } }
Ensuite, il vous faut l’appeler dans votre fichier single.php
, à l’endroit ou vous voulez afficher le message d’avertissement (si le post est trop ancien).
Comme ceci:
verif_age_post('mois', 5);
Et si le coeur vous en dit (il faudra bien), ajoutez un peu de css, et voila ce que ça donnera pour l’utilisateur:
7 Commentaires
On pourrait même pousser le vice en demandant à la fonction d’appeler une autre fonction mais en javascript via un echo, et c’est la fonction js qui se chargerait d’injecter l’alerte. Tout ça dans le but de ne pas salir les SERP avec cette phrase redondante (surtout si elle est placée juste près du titre)
J’utilise un script équivalent pour … afficher des pubs sur les vieux billets ;)
@Fabien : En effet, c’est un autre moyen d’utiliser le concept de l’astuce.
Je pense me servir de cette astuce pour la prochaine version de GeekPress :)
Salut… il ne manquerait pas [PHP echo $nb,” “,$add PHP] après le “il y a plus de” ?
En effet, l’éditeur a mangé un bout, mais c’est à jour maintenant, merci a toi ;)
Pas mauvaise idée, plutot rapide et simple. Je me permet, comme à l’acoutumée de modifier un peu la fonction et éviter ce switch, puis d’utiliser current_time() et get_post_time() au lieu d’utuliser mktime() alors qu’on a déjà ces infos au format timestamp ;)
@julio, ya pas comme une petite erreur sur la ligne $age = current_time( ‘timestamp’, true ) – get_post_time( ‘U’, true ); ??
Mon éditeur en trouve une ! :(