Glossaire

Qu'est-ce que WP-Cron ?

8 février 2026 Mis à jour le 19 avr. 2026

WordPress dispose de son propre planificateur de tâches intégré appelé WP-Cron. Il gère tout ce qui doit se produire selon un calendrier : publier des articles à une heure définie, vérifier les mises à jour, envoyer des notifications par e-mail, nettoyer les déchets de la base de données, exécuter des tâches d'arrière-plan des extensions. Cela semble raisonnable, jusqu'à ce que vous compreniez comment cela fonctionne réellement. Contrairement à un véritable système cron qui s'exécute selon une minuterie fixe, WP-Cron ne se déclenche que lorsque quelqu'un visite votre site. Pas de visiteurs, pas de cron. Et cette décision de conception entraîne tout un ensemble de problèmes.

Comment WP-Cron se déclenche au chargement de la page

Chaque fois qu'une page est chargée sur votre site WordPress, WordPress vérifie une liste d'événements planifiés. Si l'un d'eux est en retard, il se déclenche pendant ce chargement de page. Le visiteur qui a déclenché la vérification ne voit rien de différent ; les tâches cron s'exécutent en arrière-plan (en quelque sorte). Mais ce qu'il faut comprendre, c'est qu'il n'y a pas de processus indépendant qui tourne. L'ensemble du système de planification s'appuie sur le trafic HTTP entrant.

C'était un choix pragmatique. WordPress a été conçu pour fonctionner sur un hébergement mutualisé bon marché où vous ne pouvez pas installer de services système ni accéder à crontab. L'approche basée sur le trafic garantissait que les tâches planifiées fonctionneraient dès le départ, sur n'importe quel hôte, sans aucune configuration serveur.

Problèmes de WP-Cron : planifications manquées, performance et dérive

La conception dépendante du trafic présente des problèmes évidents qui deviennent plus pénibles à mesure que votre site grandit, ou, paradoxalement, lorsqu'il ne grandit pas assez :

  • Les sites à faible trafic manquent leur planification. Si votre site reçoit 10 visites par jour, les articles planifiés peuvent être publiés avec des heures de retard. Un article prévu pour 8h00 ne sera pas réellement mis en ligne tant que quelqu'un ne visitera pas le site après 8h00, ce qui pourrait être midi si votre audience se trouve dans un fuseau horaire différent. Le traitement des commandes WooCommerce, les calendriers de sauvegarde et les digests d'e-mails subissent tous le même sort.
  • Les sites à fort trafic gaspillent des ressources. Sur un site très fréquenté, WP-Cron est déclenché à presque chaque chargement de page. WordPress vérifie la liste des événements, évalue les horodatages et (la plupart du temps) ne trouve rien à faire. C'est du calcul gaspillé à chaque requête. Pire, plusieurs visiteurs simultanés peuvent déclencher la même vérification cron en même temps, ce qui entraîne des conditions de course où la même tâche s'exécute deux fois.
  • Les tâches longues ralentissent le chargement des pages. Lorsque WP-Cron se déclenche, les tâches s'exécutent dans le cadre de la requête de page. WordPress essaie de générer une requête d'arrière-plan séparée pour le travail cron réel, mais sur certaines configurations de serveur, cela échoue silencieusement, et les tâches s'exécutent en ligne. Une extension de sauvegarde générant un dump de base de données de 500 Mo peut bloquer le chargement de la page d'un visiteur si la connexion en boucle ne fonctionne pas correctement.
  • La dérive cron s'accumule. Comme les événements ne s'exécutent que lorsqu'ils sont déclenchés par le trafic, la chronologie est au mieux approximative. Une tâche prévue toutes les heures peut s'exécuter à 1h00, 2h17, 3h02, 4h45, à chaque fois que la prochaine visite se produit après l'heure planifiée.

Tâches WordPress qui dépendent de WP-Cron

Vous pourriez être surpris de voir tout ce qui dépend de ce système :

  • Publier des articles et des pages planifiés à leur date et heure définies
  • Vérifier les mises à jour du noyau WordPress, des extensions et des thèmes
  • Traiter les tâches d'arrière-plan WooCommerce (changements de statut de commande, ventes planifiées, gestion des stocks)
  • Exécuter les extensions de sauvegarde automatisées (UpdraftPlus, BackWPup, BlogVault)
  • Envoyer des campagnes ou des digests d'e-mails planifiés
  • Nettoyer les transients expirés, les articles à la corbeille et l'historique des révisions
  • Traiter les tâches en file d'attente des extensions de formulaires, d'adhésion et de LMS
  • Renouveler les certificats TLS Let's Encrypt (sur les hôtes qui gèrent cela via WordPress)

Si WP-Cron est peu fiable, tout cela devient peu fiable.

Comment remplacer WP-Cron par une vraie tâche cron serveur

La recommandation standard pour tout site qui prend la planification au sérieux est de désactiver le déclencheur basé sur le trafic et de le remplacer par une vraie tâche cron système. Il s'agit d'un processus en deux étapes :

Étape 1 : Ajoutez cette ligne à votre wp-config.php pour empêcher WordPress de déclencher cron à chaque chargement de page :

define('DISABLE_WP_CRON', true);

Étape 2 : Configurez une tâche cron système pour appeler wp-cron.php à intervalle fixe. La plupart des panneaux de contrôle d'hébergement (cPanel, Plesk) disposent d'un gestionnaire de tâches cron, ou vous pouvez utiliser crontab -e sur un serveur que vous contrôlez :

# Appeler WP-Cron toutes les 5 minutes via wget
*/5 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

# Alternative avec curl
*/5 * * * * curl -s https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

# Alternative avec WP-CLI (recommandé pour les appels locaux, évite la surcharge HTTP)
*/5 * * * * cd /var/www/html && wp cron event run --due-now >/dev/null 2>&1

L'approche WP-CLI est la plus propre car elle n'implique pas de requête HTTP. Elle exécute les événements cron directement via PHP, ce qui évite les problèmes liés aux connexions en boucle, aux délais d'attente HTTP et à l'authentification (par exemple, l'authentification HTTP basique sur les sites de préproduction).

WP-Cron sur l'hébergement WordPress managé

De nombreux hébergeurs WordPress managés (Kinsta, WP Engine, Cloudways, SiteGround) désactivent le comportement WP-Cron par défaut et le remplacent automatiquement par un cron côté serveur. Si vous êtes sur un hébergement managé, consultez leur documentation ; vous n'avez peut-être rien à faire. Mais vérifiez que cela fonctionne réellement, car certains hôtes définissent un intervalle très long (toutes les 30 minutes ou même toutes les heures) qui peut être trop peu fréquent pour vos besoins.

wp-cron.php est-il un risque de sécurité ?

Le fichier wp-cron.php est accessible publiquement par défaut. Le visiter dans un navigateur déclenche manuellement la vérification cron. Bien que cela n'expose pas de données sensibles, cela peut être détourné : un attaquant inondant le point de terminaison de requêtes peut forcer des tâches cron gourmandes en ressources à s'exécuter de manière répétée, créant une condition de déni de service.

Si vous êtes passé à un cron système, il n'y a aucune raison que wp-cron.php soit accessible publiquement. Vous pouvez bloquer l'accès externe via la configuration de votre serveur web tout en permettant au cron système de l'appeler localement.

Déboguer les tâches cron WordPress avec WP Crontrol

Si les tâches planifiées ne s'exécutent pas comme prévu, l'extension WP Crontrol est inestimable. Elle ajoute une page à l'administration WordPress qui affiche tous les événements cron enregistrés, leur prochain horaire d'exécution prévu et leur fréquence. Vous pouvez déclencher manuellement n'importe quel événement, supprimer les événements bloqués ou ajouter de nouvelles planifications personnalisées. C'est le premier outil à installer pour diagnostiquer les problèmes de cron.

Vérifiez votre configuration WP-Cron avec InspectWP

InspectWP vérifie si votre fichier wp-cron.php est accessible publiquement. Si vous êtes passé à un cron système et avez désactivé le WP-Cron intégré, le point de terminaison ne devrait pas être accessible depuis l'extérieur. Le rapport vous aide à confirmer que votre configuration cron est correctement mise en place et que vous ne laissez pas un point de terminaison inutile exposé.

Vérifiez votre site WordPress dès maintenant

InspectWP analyse votre site WordPress pour détecter les problèmes de sécurité, de SEO, de conformité RGPD et de performance — gratuitement.

Analyser votre site gratuitement