Programmer l’exécution d’un hook WordPress avec Cron

Cet article expose l’utilisation de wp_schedule_event() qui déclenche un hook dans un intervalle de temps spécifié. L’acronyme cron peut signifier Command Run On Notice. Cron est très utilisé sur les systèmes Unix et est la troncature de crontab, lui-même la troncature de chrontable table de planification, en grec ancien chronos (χρόνος) signifie le temps.

L’action se déclenchera lorsque quelqu’un visite le site même si l’heure prévue est dépassée. Le script qui utilise la fonction wp_schedule_event() devra donc être exécuté au moins une fois.

Le texte CRON, le logo WordPress sur fond des bouches de Bonifacio en Corse

On suppose être dans une classe Ocmiex_Admin qui sera exécutée au moins une fois par jour pour déclencher l’action quotidienne.

On utilise le hook init pour appeler la fonction wp_schedule_event() pour définir notre hook qui lancera notre action. On définit également l’intervalle daily correspondant à une durée de un jour avec le hook cron_schedules.

Dans le hook init, qui est déclenché lorsque wordPress est chargé et l’utilisateur authentifié, on vérifie que l’action est bien programmée avec le hook cron_my_action_hook. Si celle-ci est manquante, on l’ajoute avec la fonction wp_schedule_event().

Le hook cron_schedules permet de définir l’intervalle daily dans le tableau schedules de wordPress, en définissant une durée ici une fois par jour.

Le hook cron_my_action_hook lance notre action, qui doit être exécutée une fois par jour.

Et hop, notre action sera exécutée une fois par jour. Ceci peut être très pratique pour nettoyer régulièrement quelques tables personnalisées de la base de données wordPress. Évidemment, notre classe doit être lancée par un utilisateur qui visiterait le site (ou éventuellement la partie administration), ceci étant défini au préalable.

1 commentaire

  1. Your stuff is awesome man. Easy to understand and effortlessly reusable.
    my_action_function(...) is of course to be defined with the job you want ro run.

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables.