Cron est un utilitaire Unix/Linux qui est généralement utilisé pour planifier des commandes ou un script sur un serveur web qui s’exécute en arrière-plan. Une tâche (job) cron est la tâche elle-même, qui est utilisée pour planifier des tâches à des heures, dates ou intervalles fixes périodiques. Il s’agit généralement de tâches répétitives qui sont automatisées pour gagner du temps. Dans WordPress, ceci est géré par WP-Cron, qui est utilisé pour simuler un cron système.

Quelques exemples d’une tâche cron WordPress peuvent impliquer la planification de la publication d’un article ou l’exécution d’une extension de sauvegarde selon un calendrier pré-défini. Aujourd’hui, nous allons nous plonger dans la façon de créer, modifier et exécuter facilement une tâche cron WordPress.

Comment configurer une tâche Cron dans WordPress

Il est important de noter que WP-Cron est légèrement différent d’un cron système et qu’ils ont chacun leurs propres avantages et inconvénients. Par exemple, WP-Cron repose entièrement sur les intervalles, alors qu’un cron système repose sur des heures spécifiques. Un WP-Cron ne fonctionne également que lorsque la page est chargée (backend ou frontend), ce qui pourrait être moins fiable. Les intervalles par défaut fournis par WordPress sont : toutes les heures, deux fois par jour et tous les jours.

Pour programmer des événements WP-Cron, vous devez créer des hooks personnalisés. Nous vous recommandons de consulter le manuel officiel des extensions WordPress qui contient un guide étonnant sur la planification des événements WP-Cron. Si vous recherchez une autre façon de configurer un système cron avec WordPress, nous vous recommandons de consulter l’article de Tom Mcfarlin sur la définition d’une tâche cron WordPress. Et pour ceux qui ne sont peut-être pas aussi avancés, nous allons explorer comment utiliser facilement WP-Cron avec l’extension populaire et gratuite WP Crontrol. Celle-ci vous permet de visualiser et de contrôler ce qui se passe dans le système WP-Cron.

WP Crontrol
WP Crontrol

WP Crontrol a plus de 200.000 installations actives avec une note impressionnante de 4,5 sur 5. De nombreuses personnes de la communauté WordPress aiment vraiment cette extension.

Cette extension est super utile. Elle montre quels travaux CRON devraient être exécutés, excellente première étape pour comprendre ce qui se passe et si cela fonctionne ou non. 5 étoiles juste là. De plus, vous pouvez créer de nouvelles tâches cron et déclencher l’exécution de tâches existantes, 5 étoiles supplémentaires. – Josh, créateur de Caldera Forms

Vous pouvez la télécharger à partir du dépôt de WordPress ou en le recherchant dans votre tableau de bord WordPress sous Extensions > Ajouter. Les fonctionnalités de WP Control comprennent :

  • Possibilité d’afficher tous les événements cron avec leurs arguments, leur récurrence et leur prochaine heure d’exécution.
  • Modifier, supprimer, et exécuter immédiatement tous les événements cron.
  • Ajouter de nouveaux événements cron.
  • Ajouter, modifier et supprimer des programmes cron personnalisés.

Cron du serveur

Si vous êtes un client Kinsta, nous avons également une tâche cron serveur qui s’exécute sur tous les sites toutes les 15 minutes. Consultez notre article sur la façon de gérer les crons de serveur chez Kinsta.

Programmes WP-Cron

Une fois activé, vous pouvez modifier les horaires des tâches Cron de WordPress sous « Cron Schedules » dans les réglages de votre tableau de bord WordPress. Notez que l’extension ajoute un horaire supplémentaire par défaut, à savoir hebdomadaire. Vous pouvez également ajouter des horaires supplémentaires en secondes, comme 21600 secondes pour toutes les 6 heures.

WP-Cron schedules
WP-Cron schedules

Ces intervalles peuvent également être ajoutés avec du code en utilisant un filtre, tel que :

add_filter( 'cron_schedules', 'example_add_cron_interval' );

function example_add_cron_interval( $schedules ) {
 $schedules['five_seconds'] = array(
 'interval' => 5,
 'display' => esc_html__( 'Every Five Seconds' ),
 );

return $schedules;
 }

WP-Cron Events

Vous pouvez ensuite également utiliser l’extension pour voir vos travaux WordPress Cron actuels qui sont déjà programmés. Sous Outils, cliquez sur « Événements Cron » De nombreux noms d’actions sont facilement reconnaissables car ils doivent correspondre à une partie du nom de l’extension, comme « woocoomerce_cleanup_sessions » ou « gravityforms_cron »

Événements WP-Cron
Événements WP-Cron

Vous exécutez un événement Cron immédiatement en cliquant simplement sur « Run Now » à côté du nom de l’action. Cela peut être utile lors du dépannage, car vous pouvez avoir besoin d’exécuter un événement Cron plusieurs fois.

Événement cron exécuté avec succès
Événement cron exécuté avec succès

Modifier un événement Cron

Vous pouvez également modifier les événements Cron existants en cliquant sur « Modifier » à côté du nom de l’action. Vous pouvez alors modifier le nom de l’action, les arguments, la prochaine exécution et la récurrence programmée. Soyez prudent avec cela cependant car de nombreuses extensions dépendent de leurs tâches Cron pour fonctionner correctement.

Modifier l'événement Cron
Modifier l’événement Cron

Ajouter un événement Cron

Vous pouvez également ajouter des événements Cron. Dans cet exemple, nous allons ajouter la tâche Cron de WordPress pour l’extension Disqus. Beaucoup voudront peut-être faire cela pour modifier la fréquence de synchronisation ou s’ils ont des problèmes avec les commentaires qui se synchronisent dans les deux sens. La documentation de chaque développeur d’extension tierce devrait contenir le nom de leur événement cron, ou plutôt le nom de l’action. Dans ce cas, c’est « dsq_sync_forum » qui est utilisé par l’extension.

Si vous en créez un de toutes pièces, vous aurez besoin d’un crochet d’action correspondant quelque part dans votre code, par exemple dans votre fichier functions.php. Voici l’exemple donné par WP-Crontrol :

add_action( 'my_hookname', 'my_function' );

L’étape suivante consiste à écrire votre fonction.

function my_function() {
    wp_mail( '[email protected]', 'WP Crontrol', 'WP Crontrol rocks!' );
}

Pour Disqus, nous ajoutons d’abord un nouvel horaire cron de 600 secondes (10 minutes). Nous cliquons ensuite sur « Add Cron Event » et saisissons « dsq_sync_forum » comme nom d’action, choisissons la prochaine heure d’exécution, et choisissons la récurrence de 10 minutes que nous venons de créer. Puis nous cliquons sur « Add Cron Event » Cela va maintenant s’exécuter automatiquement toutes les 10 minutes pour nous permettre de synchroniser manuellement les commentaires Disqus avec notre base de données WordPress.

Ajouter une tâche Cron WordPress
Ajouter une tâche Cron WordPress

Et c’est à peu près tout ! C’est vraiment très facile à utiliser.

WP-Cron WP-CLI

Vous pouvez également gérer les événements WP-Cron et ou une tâche WordPress Cron dans WP-CLI. Par exemple, la commande suivante vous donnera la liste actuelle de vos événements cron.

wp cron event list

wp-cron event list

Consultez la documentation officielle WP-CLI cron pour des commandes et réglages supplémentaires.

Comment ajouter une tâche cron à l’aide de cPanel

Si vous utilisez un hébergeur qui vous donne accès à un compte cPanel, vous pouvez utiliser le panneau de contrôle pour configurer des tâches cron. Pour cela, connectez-vous à votre compte cPanel et allez dans Advanced > Cron Jobs :

Jobs Cron dans cPanel
Jobs Cron dans cPanel

La page de réglages des tâches Cron comprend des options pour configurer les notifications de tâches Cron et en créer de nouvelles. Pour ajouter une tâche cron, faites défiler la page jusqu’à la section Add New Cron Job.

Ici, vous pourrez configurer la fréquence de la commande :

Ajouter une nouvelle tâche cron
Ajouter une nouvelle tâche cron

Le menu Réglages communs comprend plusieurs options pré-configurées, allant d’une fois par minute à une fois par an. Vous pouvez utiliser l’une de ces options ou modifier les champs ci-dessous pour saisir une valeur personnalisée :

Saisissez des valeurs personnalisées
Saisissez des valeurs personnalisées

Une fois que vous avez configuré la fréquence de la tâche cron, vous pouvez ajouter la commande qu’elle exécutera dans le champ Commande. Enregistrez la tâche cron en cliquant sur Add New Cron Job. Elle apparaîtra alors dans la liste des tâches cron actuelles au bas de la page.

Comment ajouter une tâche cron dans NGINX

L’ajout d’une tâche cron dans NGINX est relativement simple si vous êtes à l’aise avec l’utilisation du terminal et l’écriture de scripts. Pour commencer, ouvrez le terminal et saisissez la commande suivante :

Sudo crontab -e

Ceci ouvrira le fichier de configuration cron. Chaque ligne du fichier comprend une tâche cron unique qui doit ressembler à ceci :

0 13 * * * /var/www/public_html/cron.php >/dev/null

Pour ajouter une nouvelle tâche cron dans NGINX, vous devez comprendre ce que fait cette commande. Les premiers chiffres et astérisques spécifient quand la tâche cron doit s’exécuter.

Chaque chiffre ou symbole représente les valeurs suivantes, dans l’ordre d’apparition de gauche à droite :

  1. Minute
  2. Heure
  3. Jour du mois
  4. Mois
  5. Jour de la semaine

Cette commande indique à NGINX d’exécuter le fichier cron.php tous les jours à 13 heures pile. Nous utilisons des astérisques pour le reste des valeurs car elles ne sont pas nécessaires pour cette tâche cron spécifique.

En plus de spécifier le fichier à exécuter, la commande indique également à la tâche cron d’ignorer toute sortie telle que les erreurs avec l’addendum >/dev/null . Vous pouvez également choisir d’enregistrer ces résultats dans un fichier journal.

Une fois que vous avez fini de modifier le fichier de configuration cron, vous pouvez enregistrer vos modifications et le fermer. Maintenant, votre serveur NGINX exécutera cette tâche cron en utilisant la configuration que vous avez définie pour elle.

Comment ajouter une tâche cron dans Kinsta

Il y a deux façons d’ajouter un cron dans Kinsta. La première approche consiste à accéder à votre site web via SSH et à exécuter la commande crontab -e.

Une fois cette commande exécutée, Kinsta vous demandera quel éditeur vous souhaitez utiliser. Ensuite, il ouvrira le fichier de configuration cron en utilisant cet éditeur.

Vous pouvez ajouter des tâches cron au fichier de configuration en créant de nouvelles commandes sur des lignes séparées. Une commande de tâche cron devrait ressembler à ceci :

0 13 * * * /var/www/public_html/cron.php >/dev/null

Vous pouvez en savoir plus sur la façon de structurer les commandes cron dans la section précédente, où nous avons examiné comment utiliser la commande crontab -e dans NGINX. Si vous préférez ne pas ajouter la tâche cron manuellement, vous pouvez demander à l’équipe de support de Kinsta de le faire pour vous.

Gardez à l’esprit que Kinsta ne peut pas modifier les tâches cron pour vous et que nous téléchargerons simplement les commandes telles que vous les fournissez. Si vous avez besoin d’aide pour configurer la commande cron, nous vous recommandons de consulter cette documentation crontab.

Comment désactiver WP-Cron

Dans certains cas, l’utilisation de la fonction WP-Cron peut entraîner des problèmes sur votre site web. WP-Cron n’est pas une « vraie » tâche cron, mais une fonction qui imite leur fonctionnement. Au lieu de fonctionner en continu, WordPress exécute le script wp-cron.php à chaque fois qu’une page se charge.

Cette approche peut poser des problèmes avec les sites web à fort trafic, car vous devrez consacrer des ressources à l’exécution de wp-cron.php à chaque chargement de page. Si le script ne s’exécute pas en raison du chargement des pages, vos commandes planifiées risquent de ne pas s’exécuter, car wp-cron.php ne « vérifie » pas les intervalles.

Si vous rencontrez des problèmes avec WP-cron, vous pouvez désactiver la fonction en ajoutant le code suivant au fichier WordPress wp-config.php :

define('DISABLE_WP_CRON', true);

Enregistrez les modifications dans le fichier et c’est tout. Toutefois, si vous choisissez de désactiver WP-Cron, vous devrez configurer une alternative en utilisant l’une des méthodes précédentes de ce tutoriel.