J'utilise WordPress depuis une vingtaine d'années maintenant et la publication programmée d'article est vraiment quelque chose qui ne fonctionne pas bien.

Voici comment y remédier 
Pourquoi programmer un article ?
Je publie mes articles toujours à l'avance et à la même heure : 8h du matin. C'est une heure plutôt active pour la veille, les actus... et c'est le bon moment pour voir passer un tweet annonçant un nouvel article sur Blogmotion 
Mais cette fonctionnalité n'a JAMAIS correctement fonctionné pour moi. Résultat : certains articles ne sont pas publiés et je dois le faire à la main...
C'était un peu mieux quand j'ai installé un plugin censé corriger les ratés de publication ("missed-scheduled-posts-publisher"). Et puis ça a recommencé à fonctionner aléatoirement. Je n'ai jamais su si c'était lié à un plugin de cache ? un manque de visiteur au moment de la programmation ? Peu importe !
Désactiver WP-cron (wp-cron.php)
Pour désactiver la fonctionnalité native de pseudo cron de WordPress (aka WP-Cron) ajouter cette ligne dans /wp-config.php :
define('DISABLE_WP_CRON', true);
N'oubliez pas d'enregistrer le fichier.
crontab ou cron web ?
Vous avez le choix d'utiliser un service crontab local si vous avez un serveur dédié, ou bien le service cron du panel d'admin de votre hébergeur s'il en propose un.
Si vous n'avez rien de tout ça vous pouvez utiliser un service web cron comme cron-job.org
L'URL à appeler est :
https://exemple.fr/wp-cron.php?doing_wp_cron
Fréquence choisie : toutes les 15 minutes, c'est suffisant pour moi.
Protéger l'accès (facultatif)
L'appel de cette URL ne fera rien de plus que de vérifier si un article doit être publié. Rien de grave à ce que l'adresse ne soit accessible par tout le monde.
MAIS! comme WordPress est régulièrement victime de vulnérabilités (comme tous les produits) je préfère filtrer l'accès par un identifiant et mot de passe. On n'est jamais trop prudent.
Pour cela ajouter à la racine du blog dans le fichier .htaccess cette directive de filtrage :
<Files "wp-cron.php">
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /datas/hebergeur/site/.htpasswd
Require valid-user
</Files>
Il faudra ensuite créer ce fichier avec la commande htpasswd sous Linux ou depuis un éditeur en ligne qui fonctionne côté client pour ne pas envoyer votre identifiant au site, exemple.
Testez l'accès depuis votre navigateur web. Si l'accès fonctionne après saisie du login/MDP alors ajoutez les dans votre service cron/crontab. Sur cron-job.org c'est dans l'onglet "avancé" du cron, cocher "Nécessite une authentification HTTP" puis saisir votre login/MDP.
Conclusion
Depuis que j'ai mis en place cette solution je n'ai plus aucun raté de publication, l'objectif est donc atteint
!
Plus de frustration ni de charge mentale pour aller vérifier si la publication s'est déroulée comme prévue.
Et si vous préférez utiliser WP-CLI c'est aussi possible avec cette commande :
wp cron event run --due-now > >/dev/null 2>&1
Et voilà !
sources : 1, 2
Vous n'aimez pas le RSS :
abonnez-vous par email
Vous devriez me suivre sur Twitter :
@xhark
Article original écrit par Mr Xhark publié sur Blogmotion le 13/08/2025 |
Pas de commentaire |
Attention : l'intégralité de ce billet est protégée par la licence Creative Commons
Cet article
[WordPress] Programmer un article sans WP-Cron provient de : on
Blogmotion.