Tout savoir sur WordPress

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:

Cet article a été publié il y a 4317 jours - Il n'est peut être plus à jour !

Article écrit par Evil Fox

7 Commentaires

  1. 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)

  2. @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 :)

  3. Salut… il ne manquerait pas [PHP echo $nb,” “,$add PHP] après le “il y a plus de” ?

  4. 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 ;)

    function verif_age_post($periode, $nb){
    	 $periodes = array( 'jours'=>86400, 'mois'=>2629743, 'années'=>31556926 );
    	 $age = current_time( 'timestamp', true ) - get_post_time( 'U', true );
         if( isset( $periodes[$periode] ) && $age>$nb*$periodes[$periode] ) { ?>
             
                 Cet article a été publié il y a plus de 
                 Les informations qu'il vous propose ne sont peut-être plus à jour.
             
         <?php
         }
    }
    
  5. @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 ! :(