Fixer une date de péremption sur vos articles WordPress

Indiquer une date limite de publication sous WordPress n’est pas disponible en natif à la différence d’une date future de parution de vos articles. 2 techniques existent pour ajouter cette fonctionnalité.

N.B : ce tutoriel fait suite à une demande Gilles sur notre forum.

Méthode n°1 – Utilisation du plugin Post Expirator

Bien que je ne sois pas spécialement fan d’utiliser un plugin dans tous les cas, il faut bien avouer que c’est de loin la solution la plus simple pour disposer d’une fonction de date limite pour vos articles.

Rendez-vous dans le menu Extensions puis saisissez post expirator. Une fois la recherchée effectuée, cliquez sur Installer maintenant.

Si vous préfèrez passer par votre client FTP, téléchargez-le à partir du lien suivant :

Post Expirator

Plugin WordPress permettant de fixer une date limite sur vos articles. Failles de sécurité détectées par BoiteAWeb, en attente de correction.

Taille : 10,4 KiB  •  Date : 6 décembre 2011 •  Hits : 947

Une boite d’information sera désormais affichée dans chacun de vos articles, vous permettant de paramétrer une date de péremption.

Capture d'écran - Post Expirator, plugin WordPress
Aperçu du plugin Post Expirator pour WordPress

N’oubliez pas de mettre à jour les articles concernés.

Méthode n°2 – Utilisation d’un hack PHP

Modification de la boucle de WordPress (loop)

Cette technique est de loin la plus compliquée des 2 – elle est réservée aux utilisateurs avancés.

Il nous faut modifier la boucle de WordPress pour insérer des conditions d’affichage des articles en fonction de la date d’expiration. Étant donné que la boucle est utilisée dans la plupart des fichiers du thème, nous resterons sur le index.php.

A l’intérieur de ce dernier, remplacez la boucle par les lignes de codes suivantes qui ont été testées sur le Twenty Ten :

<?php
if (have_posts()) :
     while (have_posts()) : the_post();

$todays_date = date("d/m/Y");

$today = strtotime($todays_date);

$expirationdate = get_post_custom_values('expiration');

if (is_null($expirationdate)) {

$expiration_date = '2524608000'; // affiche les articles sans date jusqu'en 2050 ;

} else {

$expirestringarray = implode($expirationdate);

$expiration_date = strtotime($expirestringarray);

}

if ($expiration_date > $today) { $valid = "yes"; } else { $valid = "no"; } 

if ( $valid == "yes" ) { 

             // Code de la boucle dont le titre, l'extrait, etc.
            the_title();
            the_excerpt();

         }
     endwhile;
endif;
?>

Ajout d’un champ personnalisé

Le fonctionnement de ce hack est simple. Spécifiez un champ personnalisé avec la clé expiration dans chacun de vos articles puis indiquez une date au format DD/MM/YYYY comme valeur.

Par exemple, 01/01/2012 si vous souhaitez faire un article pour la Saint Sylvestre.

Capture d'écran - Un champ personnalisé sous WordPress
Respectez le format de date européen pour la valeur

Ce bout de code est basé sur ce snippet. Je l’ai adapté car il ne fonctionnait pas correctement avec le format de date français.

Vous pouvez tester son bon fonctionnement en indiquant des dates différentes. L’article devrait disparaître ou s’afficher en fonction de la valeur spécifiée.

Dans les 2 cas évoqués ici, la technique reste la même : la création d’un champ personnalisé ayant pour valeur une date. Si vous aussi vous souhaitez proposer vos idées de tutoriels, rendez-vous sur notre forum (aucune inscription requise) !

Crédits photo : G. Horatiu

21 commentaires

  1. Nico

    Intéressante cette fonctionnalité, je la cherchais depuis un bon bout de temps. Par contre, je m’interroge sur ses effets négatifs sur le référencement, qu’en penses tu Aurélien ?

    1. Aurélien Denis auteur de l’article

      Si le fait de limiter dans le temps un article doit être réservé à des usages bien particulier. Ce n’est jamais conseillé de supprimer un élément déjà publié régulièrement d’où aussi le fait que cette option n’existe pas par défaut – et aussi parce que l’usage est limité.

      1. David

        Bonjour,
        merci pour cette info.
        Ne serait-il pas possible de basculer l’article dans une catégorie annexe ?
        Cette astuce serait alors Tip Top pour des agenda ou des article événementiel.
        De plus cela éviterai les erreur 404.

  2. valentinboisseau

    Bonjour article interessant néanmoins je recherche quelque chose d’autre : Enlever la limite de la date de publication dans le temps (date passé en l’occurrence pour moi) exemple pour les année 1800 voir encore plus ancien. Comment s’y prendre ? merci

    1. Aurélien Denis auteur de l’article

      Visiblement c’est un bug de responsive sous Chrome généralisé à l’ensemble du site. Merci de m’avoir alerté ! Je vais mener des investigations… pour info, redimensionner la fenêtre résous le bug ici.

  3. Maguin Philippe

    Bonjour,
    Est ce que cette technique fonctionne aussi pour une date entrée dans une meta box ? Car j’essaye mais je n’y arrive pas ?

    Cordialement
    Philippe

    1. Aurélien Denis auteur de l’article

      Oui bien sûr ! Une metaboxe n’est qu’une interface utilisateur pour un champ personnalisé lequel se compose d’une clé et d’une valeur. Il faut veiller à récupérer le nom exact du champ personnalisé.

  4. Karine

    Bonjour,

    Pour ma part le plugin post expirator ne fonctionne pas chez moi ! Apparemment ma version de PHP pose soucis… J’ai beau demander sur le support du plugin, je n’ai pas de réponses.

    Je me demandais si on pouvait avoir une modification du code de base donné pour que les articles basculent vers une catégorie type « anciens articles » ?

    Je ne suis pas experte en programmation

    Cordialement.

    Karine

  5. Aurélien Denis auteur de l’article

    Bonjour Karine, désolé je n’avais pas vu passer votre commentaire parmi le flot continu… oui votre version de PHP est dépassé depuis de très nombreuses années. Elle ne permet pas théoriquement de faire tourner WordPress. Il vous faut évoluer absolument !

  6. karine

    Bonjour,

    WordPress tourne très bien chez moi… Je suis avec la version 4.1.5 et ça fonctionne. La version PHP de Free doit normalement évoluer donc j’attends et j’espère.

    Le code indiqué fonctionnerait mais ne fait pas tout ce que je voudrais…C’est pour cela que je vous avais contacté.

  7. karine

    Bonjour,

    Au final je suis allée sur ce lien : http://snipplr.com/view/3899/ j’ai inséré le code comme indiqué. Il va falloir que je teste sur un article récent mais ça à l’air de marcher.

    L’avantage c’est qu’apparemment, sous réserve de vérifications, l’article disparait de l’affichage sur le blog mais pas des archives. C’est déjà un pas.

    Je vous remercie pour votre réponse. Je me doute que ça ferait pas mal de choses à tester de votre côté et comme cela date, je vais continuer mes tests je pense que vais arriver à trouver quelque chose quand même.

    Cordialement.

    Karine

  8. Ludovic Dupont

    Bonjour, je cherches dans le même style, mais je voudrais juste simplement que l’article soit pas effacé mais toujours présent sur le site si on tape son URL. Juste que certains articles s’affichent pendant un temps et après plus visible visuellement.

    Merci pour vos infos

Laisser un commentaire

Thèmes & Plugins
Premium By WP Channel

WP Alacarte propose des produits et services de qualité
made in France pour la plateforme WordPress.

Tout est prêt pour créer votre site à la carte !

  • Thèmes et extensions premium
  • Facilité d’utilisation garantie
  • Temps de chargement optimisé
  • Personnalisation avancée
Découvrir

Rejoignez la communauté WordPress !

Faites partie de l’aventure en devenant membre d’une association WordPress. Conférences, ateliers, BarCamp, WordCamp… Venez
partager votre passion pour WordPress !

Aurélien DENIS,
président des associations WordPress Francophone et WPMX