WordPress
Remplacer WP-Cron par une vraie tâche cron système
Fiche écrite en 2020, pour les navigateurs et les versions de l’époque. Vérifiez qu’elle correspond encore à votre environnement avant de l’appliquer.
WP-Cron n’est pas un vrai planificateur : il se déclenche quand un visiteur charge une page. Sur un site peu visité, les tâches (publications programmées, sauvegardes, relances WooCommerce) partent en retard. Sur un site très visité, il se lance trop souvent et consomme pour rien. Dans les deux cas, la solution est la même : le couper, et laisser la crontab du serveur s’en charger.
// wp-config.php, avant la ligne « C'est tout, ne touchez pas à ce qui suit ! »
define('DISABLE_WP_CRON', true);
La version WP-CLI est préférable : elle tourne sous l’utilisateur du site, sans passer par le serveur web, donc sans limite de durée HTTP ni risque d’être bloquée par un pare-feu applicatif. wp cron event list permet ensuite de vérifier que plus rien n’accumule de retard.
# crontab de l'utilisateur propriétaire du site (crontab -e)
*/5 * * * * cd /var/www/exemple && /usr/local/bin/wp cron event run --due-now --quiet
# Sans WP-CLI, en appelant wp-cron.php
*/5 * * * * curl -fsS "https://www.exemple.fr/wp-cron.php?doing_wp_cron" > /dev/null
# Contrôler ce qui est planifié et en retard
wp cron event list --fields=hook,next_run_relative,recurrence
Sources
- WordPress Developer Resources, brancher WP-Cron sur le planificateur système developer.wordpress.org
- WP-CLI, wp cron event developer.wordpress.org