Le nom vient du grec chronos, le temps. Sur un serveur Linux, le démon cron lit des tables de tâches et lance chaque commande au moment prévu : sauvegarde chaque nuit, renouvellement d’un certificat Let’s Encrypt, nettoyage de fichiers temporaires. WordPress a besoin du même service, mais il ne peut pas compter sur un accès au cron du système, absent de certains hébergements. Il a donc son propre mécanisme, WP-Cron.
La syntaxe d’une crontab
Chaque ligne commence par cinq champs : minute (0 à 59), heure (0 à 23), jour du mois (1 à 31), mois (1 à 12) et jour de la semaine (0 à 7, où 0 et 7 désignent le dimanche), suivis de la commande. Un astérisque signifie « chaque », et */15 dans le champ des minutes lance la tâche aux minutes 0, 15, 30 et 45.
*/15 * * * * commande-toutes-les-15-minutes
0 3 * * * commande-chaque-nuit-a-3-heures
Comment fonctionne WP-Cron
Selon la documentation de WordPress, WP-Cron vérifie à chaque chargement de page la liste des tâches programmées et exécute celles qui sont dues. Les intervalles fournis par défaut sont hourly, twicedaily, daily et weekly ; les extensions en ajoutent d’autres. Ce fonctionnement a deux conséquences. Si personne ne visite le site, rien ne s’exécute : une tâche prévue à 14 h peut attendre 17 h, comme le note la documentation. Elle n’est pas perdue pour autant, elle part à la visite suivante. À l’inverse, sur un site très fréquenté, la vérification a lieu en permanence.

Sont concernés la publication des articles programmés, les vérifications et mises à jour automatiques, les sauvegardes des extensions, l’envoi de lettres d’information ou les rapports de sécurité.
Passer au cron du système
La solution recommandée par la documentation consiste à désactiver le déclenchement par les visites dans wp-config.php :
define( 'DISABLE_WP_CRON', true );
puis à confier le lancement au cron du serveur, par une requête vers wp-cron.php ou, si l’hébergeur fournit WP-CLI, par une commande qui exécute toutes les tâches dues en évitant les exécutions qui se chevauchent :
*/5 * * * * cd /chemin/du/site && wp cron event run --due-now --quiet
Sur un hébergement mutualisé, le panneau propose en général une rubrique « Tâches cron » pour ajouter cette ligne sans terminal.
Pour WordPress
- Gardez un intervalle raisonnable, de 5 à 15 minutes : une exécution chaque minute charge inutilement un petit serveur.
- Vérifiez que la tâche système fonctionne avant d’oublier : une fois DISABLE_WP_CRON défini, plus rien ne s’exécute si la ligne de crontab est fausse.
wp cron event listmontre les prochaines échéances et révèle les tâches en retard. - Méfiez-vous des copies : sur une préproduction, les tâches planifiées peuvent envoyer des e-mails aux vrais clients ou synchroniser des données externes. Désactivez-les ou neutralisez les envois.
- Les sauvegardes planifiées par une extension dépendent de WP-Cron : contrôlez qu’elles se produisent vraiment, pour respecter votre stratégie de sauvegarde.
Erreurs fréquentes
Une tâche inconnue dans la liste des événements planifiés mérite d’être examinée : certains codes malveillants se réinstallent par une tâche programmée après chaque nettoyage.