web-dev-qa-db-fra.com

Planifier un événement à partir d'un widget

Puis-je utiliser wp_schedule_event () () pour configurer un travail cron à partir d'un widget?

J'ai essayé, mais je ne peux pas le faire fonctionner, le problème semble être le paramètre $ hook. La fonction que j'essaie d'accrocher est située dans la classe de widgets, donc je suppose que WP ne peut pas la trouver.

aucun de ces travaux:

wp_schedule_event(time(), 'daily', 'my_widget_cron');
wp_schedule_event(time(), 'daily', array(&$this, 'my_widget_cron'));

des idées?

2
Alex

wp_schedule_event prend un crochet en tant que paramètre, pas une fonction. Essayer:

wp_schedule_event(time(), 'daily', 'my_daily_event');

add_action('my_daily_event', array(&$this, 'my_widget_cron'));

if ( !wp_next_scheduled( 'my_daily_event' ) ) {
    wp_schedule_event(time(), 'hourly', 'my_daily_event')
}

Si vous supprimez le widget de la barre latérale, le cron continuera à s'exécuter. Vous pouvez exécuter le code suivant (en dehors de la classe du widget) pour l'effacer:

if ( !is_active_widget('your_widget_callback_function') && wp_next_scheduled( 'my_daily_event' ) ) {
    wp_clear_scheduled_hook('my_daily_event');
}
4
sorich87