Gérer un site WordPress implique de jongler avec des tâches récurrentes. Publier un article à 8h du matin, sauvegarder la base de données chaque nuit, vérifier les mises à jour, nettoyer les fichiers temporaires : tout cela repose sur un système de planification appelé cron. WordPress embarque sa propre version, WP-Cron, qui fonctionne différemment du cron Unix classique. Vous allez voir comment elle marche, pourquoi elle pose problème sur certains sites, et comment la remplacer par un vrai cron serveur en quelques minutes.
L’essentiel à retenir ℹ️
Le cron WordPress pilote toutes les tâches automatiques du CMS : publication différée, sauvegardes, mises à jour, envois d’e-mails. WordPress utilise par défaut WP-Cron, un système déclenché au passage des visiteurs, imprécis sur les sites à faible trafic et gourmand sur les sites très visités. La solution : le désactiver via wp-config.php puis créer un vrai cron serveur (cPanel, Plesk, o2switch) avec un appel wget ou curl à wp-cron.php toutes les 15 minutes. WP Crontrol ou Advanced Cron Manager complètent l’ensemble pour visualiser les tâches planifiées et diagnostiquer les ralentissements.
Comprendre le fonctionnement de cron dans WordPress
À l’origine, cron est un démon Unix qui exécute des commandes à des moments précis, lus dans un fichier appelé crontab. Sur un serveur Linux mutualisé ou dédié, le cron tourne en permanence et déclenche les tâches à la seconde près. WordPress, lui, ne peut pas s’appuyer directement sur ce démon car il fonctionne sur tous les hébergements, y compris ceux qui n’autorisent pas l’accès au cron système. Les développeurs du CMS ont donc créé une alternative interne : WP-Cron.
Comment fonctionne WP-Cron
WP-Cron n’est pas un vrai démon. Il s’agit d’un fichier PHP, wp-cron.php, déclenché à chaque chargement de page. À chaque visite, WordPress vérifie si une tâche planifiée doit s’exécuter et la lance si l’heure prévue est passée. Conséquence directe : sur un site sans visiteurs, aucune tâche ne tourne. Sur un site très visité, wp-cron.php peut au contraire être appelé des centaines de fois par minute et alourdir le serveur.
WP-Cron pilote des tâches WordPress courantes :
- publication différée des articles programmés
- vérification des mises à jour du cœur, des thèmes et des extensions
- envoi des e-mails de notification (commentaires, formulaires)
- tâches programmées par les extensions tierces (sauvegardes, sitemaps, cache)
Les limites de WP-Cron
Le défaut principal est l’imprécision. Une sauvegarde planifiée à 3h du matin ne se déclenchera qu’au premier visiteur après cette heure-là. Sur un site B2B fermé le week-end, l’écart peut atteindre plusieurs heures. Le second défaut est la consommation de ressources : chaque page chargée déclenche un spawn de wp-cron.php en arrière-plan via une requête HTTP interne. Sur un hébergement mutualisé saturé, ce mécanisme peut générer des erreurs 500 ou des timeouts pendant les pics de trafic.
La solution recommandée par WordPress lui-même : désactiver WP-Cron et le remplacer par un vrai cron serveur qui appellera wp-cron.php à intervalles réguliers, indépendamment du trafic. C’est aussi un prérequis si vous gérez des mises à jour automatiques ou des sauvegardes nocturnes fiables.
Désactiver WP-Cron et configurer un vrai cron serveur
La bascule se fait en deux étapes : couper WP-Cron côté WordPress, puis créer une tâche cron côté hébergement. L’opération prend cinq minutes et ne nécessite aucune extension.
Étape 1 : désactiver WP-Cron dans wp-config.php
Connectez-vous à votre site en FTP ou via le gestionnaire de fichiers de votre hébergeur. Ouvrez le fichier wp-config.php à la racine de WordPress et ajoutez cette ligne avant le commentaire « That’s all, stop editing! Happy publishing. » :
define( 'DISABLE_WP_CRON', true );
Sauvegardez. WordPress n’appellera plus wp-cron.php automatiquement à chaque visite. Aucune tâche ne tournera tant que vous n’aurez pas créé le cron serveur, donc enchaînez tout de suite avec l’étape 2.
Astuce sécurité : par défaut, wp-cron.php reste accessible publiquement. Pour empêcher un déclenchement abusif depuis l’extérieur, ajoutez une clé d’authentification dans la requête (par exemple ?doing_wp_cron=VOTRE_SECRET) et bloquez les autres appels via une règle .htaccess. C’est utile sur les sites sensibles ou e-commerce.
Étape 2 : créer le cron sur l’hébergeur
- Connectez-vous à votre interface d’hébergement. La plupart des hébergeurs grand public utilisent cPanel, Plesk ou un panneau maison (o2switch, OVH, Hostinger).
- Trouvez la section Cron Jobs ou Tâches planifiées. Sur cPanel, elle se trouve dans la rubrique Avancé.
- Définissez la fréquence. Pour un site classique, toutes les 15 minutes suffisent :
*/15 * * * *. Évitez l’intervalle d’une minute, qui surcharge le serveur sans bénéfice réel. - Saisissez la commande qui appellera wp-cron.php :
wget -q -O - https://votresite.fr/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Remplacez votresite.fr par votre nom de domaine réel. Utilisez bien https si votre site a un certificat SSL. - Enregistrez la tâche. Au prochain top horaire, le cron déclenchera wp-cron.php et exécutera les tâches en attente.

Vérifier que le cron fonctionne
Après une demi-heure, programmez un article en avant-poste de cinq minutes dans le futur. S’il se publie tout seul à l’heure prévue, le cron est opérationnel. Vous pouvez aussi installer temporairement WP Crontrol (voir plus bas) pour visualiser la file d’attente et l’historique des exécutions.
Avantages et limites de cette configuration
Le cron serveur tourne avec la régularité d’une horloge, sans dépendre des visiteurs. Il évite les déclenchements parasites pendant les pics de trafic et libère le PHP du site pour répondre plus vite aux pages publiques. En contrepartie, il faut accéder à l’interface d’hébergement et choisir une fréquence raisonnable. Trop court, le cron rate son tour avant la fin du précédent. Trop long, les tâches sensibles aux délais (notifications) prennent du retard.
Les meilleurs plugins pour gérer le cron WordPress
Que vous utilisiez WP-Cron ou un cron serveur, vous gagnerez à installer une extension qui rend visibles les tâches planifiées. Sans elle, vous travaillez à l’aveugle : impossible de savoir quelle extension a programmé quoi, ni à quelle fréquence.
WP Crontrol

WP Crontrol est la référence du domaine, maintenue depuis 2008 par John Blackbourn (un core committer WordPress). L’extension affiche dans Outils > Cron Events la liste complète des tâches programmées, leur prochaine exécution et leur fréquence. Vous pouvez exécuter une tâche manuellement, en ajouter une, modifier sa récurrence ou la supprimer si une extension désinstallée a laissé des résidus. C’est l’outil que je recommande sur tous les sites que j’audite.
Advanced Cron Manager

Advanced Cron Manager joue dans la même catégorie avec une interface plus moderne et un système de catégories pour ranger les tâches. Sa version gratuite suffit pour la plupart des usages. La version Pro ajoute la journalisation détaillée et les alertes par e-mail si une tâche échoue, utile sur les sites e-commerce où une sauvegarde ratée peut coûter cher.
Quand utiliser une extension de cron
Une extension de cron sert au diagnostic, pas à remplacer la mécanique de planification. Installez-la pour identifier une tâche qui consomme trop, pour comprendre pourquoi un mail de formulaire arrive en retard ou pour nettoyer après une désinstallation. Une fois le problème réglé, vous pouvez la garder en veille : elle ne ralentit pas le site tant que vous ne consultez pas son tableau de bord.
Bonnes pratiques de planification des tâches WordPress
Un cron mal réglé peut faire plus de mal que de bien. Voici les règles que j’applique sur les sites de mes clients pour garder une planification saine.
Lister les tâches avant de les planifier
Ouvrez WP Crontrol et regardez ce qui tourne déjà. Vous découvrirez probablement des tâches inutiles laissées par d’anciennes extensions. Supprimez ce que vous ne reconnaissez pas (après une recherche rapide pour éviter de couper un service vital), regroupez ce qui peut l’être et ajustez les fréquences à vos besoins réels. Une sauvegarde quotidienne est rarement nécessaire si vos contenus changent peu.
Décaler les heures sensibles
Si plusieurs extensions lancent leurs tâches lourdes à la même heure (souvent minuit pile), votre serveur sature pendant quelques minutes. Échelonnez les sauvegardes à 2h, le scan de sécurité à 3h, l’envoi des newsletters à 4h. WP Crontrol permet de modifier l’heure exacte de chaque tâche.
Surveiller l’impact sur le serveur
Un cron bien configuré ne se voit pas. S’il se voit, c’est qu’il y a un problème. Surveillez la consommation CPU et la mémoire au moment des passages de cron via le tableau de bord de votre hébergeur. Si vous notez des pics anormaux, la cause est presque toujours une extension qui programme une tâche trop lourde ou trop fréquente. Pour aller plus loin sur la performance globale, lisez notre guide pour optimiser la vitesse d’un site WordPress.
Tester avant de mettre en production
Toute modification du cron mérite un test. Programmez un article fictif à cinq minutes dans le futur ou déclenchez manuellement une tâche depuis WP Crontrol. Vérifiez les logs PHP de votre hébergement pour repérer une éventuelle erreur. Cette précaution évite les mauvaises surprises, comme une newsletter qui part en double ou une sauvegarde qui s’interrompt à mi-parcours.
Pour aller plus loin
Le cron n’est qu’une brique de la maintenance d’un site WordPress. Pour bâtir un environnement complet et fiable, complétez votre lecture avec nos guides sur la mise à jour de WordPress sans casser votre site, le choix d’un hébergeur adapté et l’hébergement de votre site WordPress. Maîtriser ces quatre piliers (cron, mises à jour, hébergement, sauvegardes) vous met à l’abri de la plupart des incidents qui touchent les sites mal entretenus.
Piloter le cron en ligne de commande avec WP-CLI
Sur un serveur SSH, WP-CLI donne un contrôle complet sur le cron WordPress sans passer par l’interface. Trois commandes couvrent 90% des besoins de diagnostic.
wp cron event list: affiche toutes les tâches planifiées, leur prochaine exécution et leur récurrence.wp cron event run --due-now: exécute immédiatement les tâches dont l’heure est passée, utile pour rattraper un retard.wp cron event delete <hook>: supprime une tâche orpheline laissée par une extension désinstallée.
Cette approche convient parfaitement aux scripts de monitoring et aux pipelines de déploiement qui veulent garantir qu’aucune tâche n’est en retard avant une mise en production.
Cas particulier : WooCommerce et Action Scheduler
WooCommerce et de nombreuses extensions e-commerce n’utilisent plus WP-Cron pour leurs tâches lourdes. Elles passent par Action Scheduler, une bibliothèque qui stocke les tâches dans des tables dédiées et traite des milliers d’actions en file d’attente sans saturer le cron principal. Si votre site tourne sous WooCommerce, vérifiez l’état des actions dans WooCommerce > Statut > Actions planifiées. Une file qui gonfle (statut pending qui ne diminue pas) signale un cron mal configuré ou un PHP qui plante en cours de route. La bascule sur cron serveur règle généralement le problème, car Action Scheduler s’appuie lui aussi sur les déclenchements de WP-Cron.
Foire aux questions
Faut-il toujours désactiver WP-Cron ?
Non. Sur un petit site personnel avec peu de tâches programmées, WP-Cron suffit. Le passage à un vrai cron serveur devient utile dès que vous avez des sauvegardes régulières, une newsletter, un site e-commerce ou un trafic très inégal entre le jour et la nuit.
Quelle fréquence choisir pour le cron serveur ?
Toutes les 15 minutes (*/15 * * * *) couvre la grande majorité des besoins. Réduisez à 5 minutes uniquement si vous avez des notifications temps réel ou un calendrier de publication très serré. Évitez la minute, qui surcharge le serveur sans bénéfice réel.
Comment savoir si mon cron fonctionne ?
Programmez un article à cinq minutes dans le futur et vérifiez qu’il se publie à l’heure prévue. Vous pouvez aussi installer WP Crontrol et consulter la colonne Next Run : si l’heure ne se met jamais à jour, le cron ne tourne pas.
Le cron serveur est-il disponible chez tous les hébergeurs ?
Sur les hébergements mutualisés grand public (o2switch, OVH Perso, Hostinger, Infomaniak), oui, via cPanel ou un panneau maison. Sur quelques offres d’entrée de gamme très limitées, l’accès au cron est bridé. Vérifiez auprès du support avant de migrer.
Quelle différence entre WP Crontrol et Advanced Cron Manager ?
WP Crontrol est plus ancien, maintenu par un développeur du cœur WordPress, et reste l’outil de référence pour le diagnostic. Advanced Cron Manager propose une interface plus moderne et une version Pro avec alertes e-mail. Les deux font le même travail de base.
Puis-je supprimer une tâche cron WordPress sans risque ?
Avant toute suppression, identifiez la source via WP Crontrol. Une tâche dont vous ne reconnaissez pas le nom appartient probablement à une extension active. La supprimer peut casser une fonctionnalité. Désinstallez plutôt l’extension responsable, le cron disparaîtra avec elle.
Le cron WordPress consomme-t-il beaucoup de ressources ?
WP-Cron consomme proportionnellement au trafic, ce qui peut devenir lourd sur un site très visité. Un cron serveur bien configuré (toutes les 15 minutes) reste très léger. Les pics éventuels viennent presque toujours d’une extension qui programme une tâche mal optimisée, pas du cron lui-même.
