WordPress publie des articles programmés, déclenche des sauvegardes automatiques, vérifie les mises à jour disponibles : toutes ces tâches semblent tourner en arrière-plan comme une vraie tâche planifiée système. En réalité, ce n'est pas tout à fait le cas, et comprendre cette nuance évite bien des publications programmées qui sortent en retard.
Comment fonctionne réellement WP-Cron
Le fichier wp-cron.php ne tourne pas en continu en arrière-plan sur le serveur. Il s'agit d'un pseudo-cron : à chaque chargement d'une page du site par un visiteur, WordPress vérifie si des tâches planifiées sont arrivées à échéance, et si c'est le cas, les exécute à ce moment précis. Ce mécanisme a l'avantage de ne nécessiter aucune configuration serveur particulière pour fonctionner « out of the box », ce qui explique son choix initial pour un CMS destiné à tourner sur toutes sortes d'hébergements, y compris les plus basiques.
Le problème sur un site à faible trafic
Si personne ne visite le site pendant plusieurs heures, aucune page ne se charge, donc aucune vérification de tâche planifiée n'a lieu. Un article programmé pour 8h peut ainsi se publier à midi, au moment où le premier visiteur de la journée charge enfin une page. Pour un site avec un trafic régulier et fréquent, ce délai reste généralement imperceptible ; pour un blog ou un site institutionnel à faible affluence, il peut devenir gênant, en particulier pour des publications dont l'heure exacte compte.
Le problème inverse sur un site à fort trafic
À l'opposé, un site avec énormément de trafic déclenche une vérification des tâches planifiées à chaque chargement de page, même quand aucune tâche n'est réellement due. Sur un site très fréquenté, cela représente une charge supplémentaire inutile répétée à chaque visite, qui s'additionne aux autres traitements PHP déjà nécessaires pour générer la page.
La solution : un vrai cron système
La bonne pratique, recommandée dans la documentation officielle de WordPress elle-même, consiste à :
- Désactiver le déclenchement automatique de WP-Cron à chaque visite, en ajoutant define('DISABLE_WP_CRON', true); dans wp-config.php.
- Configurer une véritable tâche planifiée au niveau du système d'exploitation (cron Linux) qui appelle wp-cron.php à intervalle régulier (par exemple toutes les 5 ou 15 minutes), via wget, curl ou la commande WP-CLI wp cron event run --due-now.
Cette approche garantit une exécution régulière et prévisible des tâches planifiées, indépendamment du trafic réel du site, tout en évitant la charge redondante sur les sites très visités.
Vérifier que la bascule fonctionne correctement
Une fois WP-Cron désactivé en pseudo-cron et remplacé par une tâche planifiée système, il reste utile de vérifier concrètement que les tâches s'exécutent bien à l'heure prévue :
- La commande WP-CLI wp cron event list affiche l'ensemble des tâches planifiées enregistrées, avec leur prochaine heure d'exécution prévue.
- Comparer cette heure prévue avec l'heure réelle d'exécution, observable dans les journaux du cron système ou dans les effets concrets de la tâche (un article programmé réellement publié à l'heure, par exemple).
- En cas d'écart répété, vérifier que la tâche cron système appelle bien la bonne URL, avec le bon intervalle, et que le serveur n'a pas de restriction qui empêche wget ou curl de fonctionner correctement en ligne de commande.
Une précaution s'impose au moment de désactiver le pseudo-cron intégré : si la tâche planifiée système n'est pas correctement mise en place en parallèle, le site se retrouve avec aucun mécanisme de tâche planifiée actif, ce qui bloque silencieusement les publications programmées, les sauvegardes automatiques et les vérifications de mise à jour. Toujours tester que le nouveau cron système fonctionne avant de désactiver définitivement le comportement par défaut de WordPress.
WP-Cron est-il activé par défaut sur tous les hébergements WordPress ?
Oui, c'est le comportement par défaut de WordPress, sans configuration particulière nécessaire côté hébergement. C'est justement pour cela qu'il fonctionne « partout », mais avec les limites de fiabilité décrites ci-dessus.
Faut-il absolument remplacer WP-Cron par un cron système ?
Pour un site avec un trafic faible ou irrégulier, ou pour des tâches sensibles au timing (publications programmées, sauvegardes planifiées), c'est fortement recommandé. Pour un site à trafic constant et élevé, le gain est plus limité, mais la charge redondante évitée reste un avantage réel.
Mettre en place un vrai cron système nécessite un accès en ligne de commande au serveur, disponible sur les offres VPS Linux de VSP TECH. Pour un hébergement mutualisé via nos offres d'hébergement WordPress, notre équipe peut configurer cette tâche planifiée pour vous sur simple demande de contact.