web-dev-qa-db-fra.com

wp_schedule_event uniquement lorsque l'administrateur est visité

Sur la page de documentation , il est indiqué que "l'action sera déclenchée lorsque quelqu'un visitera votre site WordPress, si l'heure programmée est écoulée".

Est-il possible de déclencher cette action uniquement lorsque l'administrateur est visité? J'essaie d'empêcher qu'une opération lente ait un impact sur les utilisateurs situés à l'avant.

1
Mike

Dans votre fonction de rappel d’événement, vérifiez si l’ID utilisateur est l’administrateur, puis exécutez la fonction, sinon replanifiez-la. Donc, en utilisant l'exemple de la page du codex que vous avez lié à la question, cela ressemblerait à ceci:

function my_activation() {
    if ( !wp_next_scheduled( 'my_hourly_event' ) ) {
        wp_schedule_event(time(), 'hourly', 'my_hourly_event');
    }
}
add_action('wp', 'my_activation');

function do_this_hourly() {
    // do something every hour only if this is the admin
    if (!current_user_can('administrator')){
        // time()+1800 = 1/2 hour from now.
        wp_schedule_single_event(time()+1800, 'my_hourly_event');
        return;
    }else{
        //do your thing
    }
}
2
Bainternet