12k
All articles

Comment programmer des articles dans WordPress

Programmez des articles WordPress, corrigez les publications manquées et configurez WP-Cron avec un vrai cron serveur pour publier à l heure.

OpenReplay Team
OpenReplay Team
Comment programmer des articles dans WordPress

Pour programmer un article dans WordPress, ouvrez le panneau Réglages → Résumé de l’article, cliquez sur la date Publier : Immédiatement, choisissez une date et une heure futures, puis cliquez sur le bouton Programmer qui remplace Publier.

Cette étape prend moins d’une minute. Ce qui prend plus de temps, c’est de comprendre pourquoi l’article que vous avez mis en file d’attente pour 2 h du matin était toujours là au petit-déjeuner, marqué Publication planifiée manquée en rouge.

La raison remonte à la façon dont WordPress exécute les tâches planifiées : non pas selon une véritable minuterie, mais au fil des chargements de pages. Ce guide couvre d’abord le parcours de clics rapide, puis le mécanisme WP-Cron et le correctif permanent basé sur un cron serveur qui met définitivement fin aux publications manquées.

Points clés à retenir

  • WordPress programme les articles selon le fuseau horaire de votre site, qui est UTC par défaut. Définissez le bon fuseau dans Réglages → Général avant de programmer, sinon les articles seront publiés à la mauvaise heure locale.
  • WordPress n’utilise pas de véritable minuterie système ; il s’appuie sur WP-Cron, un pseudo-cron qui ne vérifie les tâches dues que lorsqu’un visiteur charge une page. Un site à faible trafic ou fortement mis en cache peut donc rater complètement le moment programmé.
  • Le correctif permanent consiste à exécuter un véritable cron serveur qui requête wp-cron.php toutes les 5 à 15 minutes, puis à ajouter define('DISABLE_WP_CRON', true); dans wp-config.php. Procédez dans cet ordre, sinon les tâches planifiées cessent silencieusement de s’exécuter.
  • Les plugins comme MWW Scheduled Post Trigger ne publient les articles manqués qu’après leur retard ; un cron serveur, lui, empêche le retard de se produire.
  • Les plateformes managées comme Kinsta et DreamPress de DreamHost exécutent déjà un cron au niveau serveur (généralement toutes les 15 minutes), vous n’avez donc en général rien à configurer.

Définissez d’abord votre fuseau horaire

WordPress programme les articles selon le fuseau horaire de votre site, qui est UTC par défaut. Définissez le bon fuseau dans Réglages → Général avant de programmer, sinon les articles seront publiés à la mauvaise heure locale. Une installation neuve stocke les heures en temps universel coordonné : un article mis en file d’attente pour « 8:00 » sera donc publié à 8 h UTC tant que vous n’avez pas indiqué à WordPress où vous vous trouvez. Rendez-vous dans Réglages → Général, choisissez une ville de votre fuseau (les entrées basées sur une ville gèrent automatiquement l’heure d’été, contrairement aux décalages UTC fixes), puis enregistrez. Faites-le une fois pour toutes, avant de programmer quoi que ce soit. Les notes d’installation du plugin MWW Scheduled Post Trigger vous demandent de vérifier ce réglage en premier, et sa FAQ vous y renvoie lorsque les articles n’apparaissent toujours pas.

Comment programmer un article dans l’éditeur de blocs ?

Pour programmer un article dans l’éditeur de blocs, ouvrez le panneau Réglages → Résumé, cliquez sur la date Publier : Immédiatement, choisissez une date et une heure futures, puis cliquez sur le bouton Programmer qui remplace Publier. WordPress publiera l’article automatiquement à ce moment précis. Pour vérifier : le bouton en haut affiche Programmer et non Publier dès qu’une date future est définie.

Éditeur classique : dans la boîte méta Publier, cliquez sur Modifier à côté de Publier tout de suite, saisissez votre date et votre heure, cliquez sur OK, puis sur le bouton Programmer.

Les pages fonctionnent de la même manière. Le contrôle de date se trouve dans le même panneau pour les deux types de contenu.

Gérer, déprogrammer et publier en avance

Pour voir tous les articles en file d’attente, allez dans Articles → Tous les articles et cliquez sur le filtre Planifiés au-dessus de la liste ; vous pouvez ensuite modifier, publier en avance ou déprogrammer n’importe quelle entrée.

  • Publier en avance : ouvrez l’article et cliquez sur Publier. Il est mis en ligne immédiatement, quelle que soit l’heure programmée.
  • Déprogrammer : repassez le statut de l’article à Brouillon. Cela le retire de la file d’attente sans le publier, et vous pouvez continuer à le modifier puis le reprogrammer plus tard. (Fixer la date à « maintenant » et cliquer sur Publier correspond à publier en avance, pas à déprogrammer.)
  • Programmer des modifications sur un article déjà publié : ce n’est pas possible par défaut, car toute modification apportée à un article en ligne devient publique dès l’enregistrement. Pour mettre une mise à jour en file d’attente, utilisez un plugin comme PublishPress Revisions, qui prépare une révision et la publie selon un calendrier.

Pourquoi les articles programmés de WordPress sont-ils manqués ?

WordPress n’utilise pas de véritable minuterie système. Il s’appuie sur WP-Cron, un pseudo-cron qui ne vérifie les tâches dues que lorsqu’un visiteur charge une page : sur un site à faible trafic, un article programmé pour 2 h du matin risque de ne pas être publié avant l’arrivée du prochain visiteur. Le Plugin Handbook est on ne peut plus clair sur les conséquences pratiques : mettez une tâche en file d’attente pour 14 h, n’ayez aucun visiteur avant 17 h, et la tâche restera en attente jusqu’à 17 h. Quand le déclencheur finit par se produire, l’article est déjà en retard et WordPress le marque Publication planifiée manquée en rouge.

Deux conditions de production aggravent le problème :

  • Trafic faible ou nul. Comme l’explique SpinupWP, les événements planifiés ne se déclenchent que lorsque quelqu’un se présente : un site silencieux pendant des heures ratera donc tout ce qui était dû dans cet intervalle. Les publications nocturnes sur un blog personnel en sont la victime classique.
  • Mise en cache de pages complètes agressive. Une page en cache est servie sous forme de HTML statique sans exécution de PHP : WP-Cron ne s’exécute donc jamais. Si une part suffisante de votre trafic est servie depuis le cache, WordPress s’exécute à peine, ce qui signifie que même un site très fréquenté peut cesser de déclencher les événements planifiés. C’est une cause fréquente sur les sites optimisés pour la performance.

Le correctif permanent : désactiver le pseudo-cron et exécuter un vrai cron serveur

Le correctif permanent consiste à exécuter un véritable cron sur une minuterie fixe, puis à désactiver le déclenchement au chargement de page. Il s’agit d’une approche documentée et non d’un contournement : le Plugin Handbook traite du branchement de WP-Cron sur le planificateur de tâches système précisément pour les cas où une tâche doit s’exécuter à l’heure.

Procédez dans cet ordre. Si vous désactivez WP-Cron avant qu’un remplaçant ne soit en place, les tâches planifiées cessent de se déclencher sans erreur ni avertissement : articles, sauvegardes et vérifications de mises à jour se taisent tous jusqu’à ce que vous vous en aperceviez.

Étape 1 : ajoutez une véritable tâche cron. Dans le module Cron Jobs de cPanel ou dans la crontab de votre serveur, requêtez wp-cron.php à intervalle régulier. Une valeur par défaut fiable est de 5 à 15 minutes. Cette forme avec wget -q -O - est celle de Kinsta :

*/15 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Le */15 l’exécute toutes les 15 minutes ; remplacez example.com par votre domaine. La forme canonique du Handbook utilise wget --delete-after http://YOUR_SITE_URL/wp-cron.php au même intervalle. Les deux fonctionnent ; choisissez celle que votre hébergeur prend en charge.

Étape 2 : désactivez le déclenchement au chargement de page. Une fois le cron serveur en place, ajoutez cette ligne dans wp-config.php, au-dessus du commentaire /* That's all, stop editing! */ :

define('DISABLE_WP_CRON', true);

Le plugin comme solution provisoire. Les plugins comme MWW Scheduled Post Trigger ou Missed Scheduled Posts Publisher ne publient les articles manqués qu’après leur retard, et la FAQ de MWW le décrit elle-même comme une solution provisoire, en attendant que vous et votre hébergeur déterminiez pourquoi le cron ne se déclenche pas. Un véritable cron serveur empêche le retard au lieu d’y réagir. Ne comptez sur aucun plugin comme garantie absolue : certains échouent sur certaines configurations d’hébergement.

Plugin provisoireVrai cron serveur (recommandé)
Ce qu’il faitPublie les articles déjà manqués à la prochaine visite/au prochain intervalleDéclenche wp-cron.php sur une minuterie fixe, indépendamment du trafic
Idéal pourBlogs personnels à faible trafic, déblocage rapideProduction, sites mis en cache, faible trafic ou installations multisites
Empêche le retard ?Non, réagit après coupOui, proactif
Mise en placeInstaller et activerModifier wp-config.php + ajouter une entrée cron (ou utiliser un hébergeur managé)

Hébergeurs managés. Kinsta exécute un cron au niveau serveur sur chaque site toutes les 15 minutes, et DreamPress de DreamHost désactive WP-Cron par défaut et le remplace par un cron système au même intervalle. Sur ce type de plateformes, vous n’avez généralement rien à configurer. Consultez la documentation de votre hébergeur avant de désactiver WP-Cron.

Vérifier et forcer l’exécution avec WP-CLI. Sur un serveur accessible en SSH, wp cron event list affiche les événements planifiés et leurs prochaines exécutions, et wp cron event run --due-now force immédiatement l’exécution de tous les événements en retard : c’est le moyen le plus rapide de confirmer qu’un article bloqué sera bien publié.

Pour conclure

Programmer un article WordPress se résume à un parcours de clics d’une minute, mais garantir la fiabilité de ces publications relève du serveur. Définissez votre fuseau horaire dans Réglages → Général et mettez vos articles en file d’attente depuis le panneau Résumé. Si des articles programmés affichent un jour Publication planifiée manquée, arrêtez de faire confiance au pseudo-cron déclenché au chargement de page : pointez un véritable cron serveur vers wp-cron.php toutes les 5 à 15 minutes, puis ajoutez define('DISABLE_WP_CRON', true);. Ce simple changement fait passer la programmation du « au mieux » au parfaitement fiable, même sur un site peu fréquenté ou fortement mis en cache.

FAQ

Dois-je désactiver WP-Cron si je suis chez un hébergeur WordPress managé comme Kinsta ou DreamHost ?

Non : sur des plateformes managées comme Kinsta et DreamPress de DreamHost, vous n'avez généralement pas besoin de désactiver WP-Cron vous-même, car ces plateformes exécutent déjà de leur côté un cron au niveau serveur (généralement toutes les 15 minutes) qui déclenche wp-cron.php indépendamment du trafic. Consultez d'abord la documentation de votre hébergeur — de nombreuses offres managées configurent cela automatiquement, et le dupliquer n'apporte aucun bénéfice. Ne touchez à wp-config.php que si votre hébergeur confirme qu'il n'exécute pas de cron serveur.

Quelle est la différence entre un plugin de publication manquée et un vrai cron serveur ?

Un plugin de publication manquée comme MWW Scheduled Post Trigger ou Missed Scheduled Posts Publisher ne publie les articles qu'après leur retard, en réagissant au prochain chargement de page ou au prochain intervalle, tandis qu'un vrai cron serveur déclenche wp-cron.php sur une minuterie fixe indépendamment du trafic et empêche tout retard de se produire. Les plugins constituent une solution provisoire rapide pour les blogs personnels à faible trafic ; un cron serveur est le correctif proactif pour les installations en production, mises en cache ou multisites.

Pourquoi mon article programmé a-t-il été publié à la mauvaise heure ?

Une installation WordPress neuve stocke les heures en temps universel coordonné (UTC) : un article mis en file d'attente pour « 8:00 » est donc publié à 8 h UTC tant que vous n'avez pas défini votre fuseau dans Réglages puis Général. Choisissez une entrée basée sur une ville plutôt qu'un décalage UTC fixe, car les entrées de ville s'ajustent automatiquement à l'heure d'été. Réglez cela une fois avant de programmer quoi que ce soit pour que tous vos futurs articles suivent votre horloge locale.

Comment vérifier que mes articles programmés seront réellement publiés ?

Sur un serveur avec accès SSH, exécutez wp cron event list pour voir chaque événement planifié et sa prochaine exécution, puis wp cron event run --due-now pour forcer l'exécution immédiate de tous les événements en retard. Ce duo WP-CLI est le moyen le plus rapide de confirmer qu'un article bloqué sera publié et de diagnostiquer si WP-Cron se déclenche réellement. Sans SSH, le plugin WP Crontrol expose la même liste d'événements depuis le tableau de bord d'administration.

La mise en cache de pages complètes peut-elle provoquer des publications manquées ?

Oui, une mise en cache agressive des pages complètes est une cause fréquente et souvent négligée des publications manquées. Une page en cache est servie sous forme de HTML statique sans exécution de PHP : WP-Cron ne s'exécute donc jamais sur ces requêtes, même en cas de trafic élevé. Si une part suffisante de votre trafic est servie depuis le cache, WordPress s'exécute à peine et les événements planifiés cessent de se déclencher. Le correctif est le même que pour les sites à faible trafic : désactivez le déclenchement au chargement de page et exécutez un véritable cron serveur.

DevTools for the frontend

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers.

Star on GitHub12k

We use cookies to improve your experience. By using our site, you accept cookies.