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é.
Méthode n°1 – Utilisation de l’extension PublishPress Future (ex-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.
Post Expirator s’appelle désormais PublishPress Future. Rendez-vous dans Extensions > Ajouter une extension puis saisissez PublishPress Future dans le champ de recherche. Une fois la recherche effectuée, cliquez sur Installer maintenant puis sur Activer.
Si vous préférez passer par votre client FTP, téléchargez-la à partir du lien suivant :
Plugin WordPress permettant de fixer une date limite sur vos articles. Failles de sécurité détectées par BoiteAWeb, en attente de correction. »
Un panneau Actions Future s’affiche désormais dans la barre latérale de l’éditeur de vos articles et de vos pages. Cochez Activer l’action Future, choisissez l’action à appliquer dans la liste Action, puis la date et l’heure. Par défaut, l’extension propose de Modifier l’état en Brouillon, ce qui dépublie l’article ; vous pouvez aussi le passer en privé, le placer dans la corbeille, le supprimer ou modifier ses catégories.
N’oubliez pas de mettre à jour les articles concernés.
Méthode n°2 – Utilisation d’un hack PHP
Programmer la dépublication avec WP-Cron
Cette technique est de loin la plus compliquée des 2 – elle est réservée aux utilisateurs avancés.
La première version de cette méthode modifiait la boucle du fichier index.php du thème pour masquer les articles expirés. Je vous la déconseille aujourd’hui : l’article restait accessible à son adresse et dans le flux RSS, la comparaison lisait les dates DD/MM/YYYY comme des dates américaines (un article daté du 25/12 disparaissait aussitôt, le 05/09 était compris comme le 9 mai), et les modèles d’un thème à blocs sont des fichiers HTML qui n’exécutent pas de PHP.
Je vous propose plutôt de dépublier réellement l’article à la date voulue : chaque fois que la date est saisie ou modifiée, le code ci-dessous programme une tâche WP-Cron qui fera passer l’article à l’état Brouillon le moment venu.
Ajoutez ce code dans le fichier functions.php de votre thème enfant ou dans une extension de fonctions globales :
La date est interprétée dans le fuseau horaire choisi dans Réglages > Général. La tâche est recalculée à chaque modification de la date ou de l’article, et le code vérifie de nouveau la date au moment de l’exécution : si vous la repoussez ou supprimez le champ, l’article reste en ligne. Pensez-y aussi avant de republier un article expiré : tant que sa date reste dépassée, il repasse en brouillon à la prochaine exécution de WP-Cron.
Ajout d’un champ personnalisé
Le fonctionnement de ce hack est simple. Spécifiez un champ personnalisé avec la clé expiration dans les articles concernés puis indiquez une date au format DD/MM/YYYY comme valeur, éventuellement suivie d’une heure au format HH:MM (15/01/2027 18:00, par exemple). Dans l’éditeur de blocs, affichez d’abord ce panneau depuis le menu Options : Préférences > Général, rubrique Avancé, option Champs personnalisés, puis Afficher et recharger la page. Le panneau Champs personnalisés apparaît sous le contenu : saisissez expiration comme nom et la date comme valeur, puis cliquez sur Ajouter un champ personnalisé.
Par exemple, 01/01/2027 si vous souhaitez faire un article pour la Saint-Sylvestre : il sera dépublié le 1er janvier à minuit.
Pour tester son bon fonctionnement, indiquez une date déjà passée sur un article de test : il passe à l’état Brouillon à la prochaine exécution de WP-Cron. Une date saisie dans un autre format, ou impossible comme le 31/02, est ignorée.
Dans les 2 cas évoqués ici, la technique reste la même : une date enregistrée dans un champ personnalisé de l’article, puis une tâche planifiée qui applique l’action à l’échéance. Ces tâches WP-Cron se déclenchent lors des visites sur votre site : sur un site peu fréquenté, l’article peut rester en ligne un peu après l’heure prévue. Si c’est gênant, ou si WP-Cron est désactivé sur votre site, confiez WP-Cron au planificateur de tâches de votre serveur.
Pour d’autres réglages d’affichage des articles, apprenez à exclure les articles épinglés de la boucle.
21 réponses
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
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
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é.
Ce n’est pas normal que Free ne vous donne pas la possibilité d’évoluer car les minimum sont supérieurs à votre version actuelle : https://wordpress.org/about/requirements/
Et encore, PHP 5.4 est conseillé.
Sinon, pour le bout de code, c’est faisable mais cela nécessiterait de tester pas mal de choses de mon côté… 🙂
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 ! 🙂
Bonjour,
Personne pour me répondre ou m’aider ?
Cordialement.
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
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
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é.
le texte de cette page ne s’affiche as sur chrome mac sinon parfait sur safari ???
bon courage
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.
est il possible de recevoir un mail lorsque la page arrive à son terme?
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
Merci pour les conseils, je vais tester ça 🙂
Il y aurait un autre plugin qui fait la même chose, mais qui a été mis a jour plus récemment : http://wordpress.org/extend/plugins/content-scheduler/
Mais je me pose toujours la même question : est ce que la suppression d’article n’affecte pas le référencement ? (page 404 etc…)
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é.
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.
Merci pour l’info ! Sauf qu’il faut préciser qu’apparemment le plugin ne fonctionne plus depuis plusieurs mois (http://wordpress.org/tags/post-expirator?forum_id=10) et il n’y a pas eu de mise à jour depuis janvier 2011 🙁 En espérant que son auteur se réveillera bientôt…
Ca m’étonne, il me semble que cela fonctionnait lors du test… tu l’as testé ?
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 ?