it-swarm-ja.com

ウィジェットからのcronイベントのスケジュール

ウィジェット内からcronジョブを設定するために wp_schedule_event() を使用できますか?

私は試しましたが、うまく動作させることができません。問題は$ hookパラメータのようです。フックしようとしている関数はウィジェットクラス内にあるので、WPはそれを見つけることができません。

どちらもうまくいきません。

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

何か案は?

2
Alex

wp_schedule_eventは関数ではなくパラメータとしてフックを取ります。試してください:

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')
}

サイドバーからウィジェットを削除しても、cronは引き続き実行されます。あなたはそれをクリアするために(ウィジェットクラスの外で)次のコードを実行することができます:

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