WP-Cron est un programme qui permet d’exécuter périodiquement un script.
Historiquement Cron (contraction de chrono table) est un programme d’arrière-plan (ou deamon) développer pour les systèmes UNIX. Par la suite les descendants d’UNIX (BSD, Darwin, Linux…) en ont hérité.
Et WordPress dans tout ça ?
WordPress possède ça propre version de Cron appelé WP-Cron. Bien entendu il n’a de Cron que le nom. Comme beaucoup d’autres programmes UNIX, Cron est entré dans les moeurs. Dire d’aujourd’hui « faire un Cron » cela veut dire que l’on crée une planification.
Programmer une tâche unique
Sans le savoir, à chaque fois qu’une page ou un article est publié en différé (Publier tout de suite Modifier), l’utilisateur délègue la publication à WP-Cron.
Sous le capot, cela revient à faire appel à la fonction wp_schedule_single_event() avec comme paramètres la date/heure et une action du type hook. Il s’agit d’une fonction contenant le script que devra exécuter WP-Cron. Mais avant d’utiliser wp_schedule_single_event() WordPress préconise de vérifier si l’exécution du script n’a pas déjà été panifier à l’aide de la fonction wp_next_scheduled.Dans le cas contraire, la fonction retourne la date de la prochaine exécution.
[php] // création de la tâche sous forme de fonctionadd_action(‘action_hook’, ‘cron_script’);
function cron_script {
// le code source de la tâche figure ici
}
// vérification et planification de la tâche
if( !wp_next_scheduled(‘action_hook’)){
wp_schedule_single_event( time() + 3600, ‘action_hook’);
}
[/php]
La fonction wp_schedule_single_event() à deux arguments obligatoires:
- La date à laquelle le script sera exécuté. Pour cela il faut fournir un timestamp, comme dans l’exemple ci-dessous avec time() qui retourne l’heure courante, mesurée en secondes depuis le début de l’époque UNIX, (1er janvier 1970 00:00:00 GMT) plus 3600 secondes pour ajouter 1 heure.
- Le nom du hook associé à la tâche action_hook.
Déprogrammer une tâche
WordPress stocke la date de la prochaine exécution d’une tâche planifiée dans la table wp_options. Pour la déprogrammer, il faut utiliser la fonction wp_clear_scheduled_hook() en précisant le hook associé à la tâche. Soit, action_hook.
[php] <?php wp_clear_scheduled_hook(‘action_hook’); ?>[/php]