web-dev-qa-db-fra.com

Aide sur les tâches planifiées récurrentes

J'essaie de configurer une tâche planifiée dans mon installation Wordpress qui va (éventuellement) exécuter un script pour envoyer un email une fois par jour avec un chargement de données.

Cependant, je n'arrive pas à obtenir l'exécution d'une tâche planifiée du tout. Je le teste avec un intervalle de 2 minutes pour voir si je peux le faire fonctionner. Ce que j’ai jusqu’à présent est en dessous et au bas de mon fichier functions.php. Une idée où je vais mal?

add_filter('cron_schedules','my_cron_definer');
function my_cron_definer($schedules){
    $schedules['twomin'] = array(
        'interval'=> 120,
        'display'=>  __('Once Every 2 Minutes')
    );
    return $schedules;
}

add_action('my_periodic_action','my_periodic_function');
function my_periodic_function(){
    mail('[email protected]','Test!', 'Test Message');
}
wp_schedule_event(time(), 'twomin', 'my_periodic_action');

Je suis conscient que mon site Wordpress doit recevoir les pages visitées pour que la fonction soit exécutée. Je clique donc sur le site dans l'espoir de déclencher ma fonction, mais pas de chance!

Remarque: J'ai échangé ma véritable adresse électronique!

3
Probocop

Vous devez planifier votre événement dans un crochet, par exemple dans les actions after_setup_theme ou wp:

add_filter('cron_schedules','my_cron_definer');
function my_cron_definer($schedules){
    $schedules['twomin'] = array(
        'interval'=> 120,
        'display'=>  __('Once Every 2 Minutes')
    );
    return $schedules;
}

add_action('my_periodic_action','my_periodic_function');
function my_periodic_function(){
    mail('[email protected]','Test!', 'Test Message');
}

add_action( 'wp', 'wpse8170_setup_events' );
// or add_action( 'after_setup_theme', 'wpse8170_setup_events' );
function wpse8170_setup_events() {
    if ( !wp_next_scheduled( 'my_periodic_action' ) ) {
        wp_schedule_event(time(), 'twomin', 'my_periodic_action');
    }
}
1
Eugene Manuilov