WordPressのCronスケジュール登録で第三引数argsを指定したイベントの削除方法
wp_schedule_single_eventでcronスケジュールを登録する時に第三引数argsを指定した場合の、スケジュール削除方法です。(wp_schedule_eventの場合は第四引数)
サンプルコード
$res_get_cron_array = _get_cron_array();
$sche_time_for_delete = '';
$sche_args_for_delete = array();
foreach( $res_get_cron_array as $get_cron_key => $get_cron_val_arr ){
$sche_time_for_delete = $get_cron_key;
foreach( $get_cron_val_arr as $sche_name => $sche_val ){
if( '削除したいフック名' == $sche_name ){
$unknown_key = key( $sche_val );
$sche_args_for_clear = $sche_val[$unknown_key]['args'];
wp_unschedule_event( $sche_time_for_delete, '削除したいフック名', $sche_args_for_clear );
}
}
}解説
cronイベントを削除する場合、wp_unschedule_event()で削除できますが、
第三引数($args)を指定したcronイベントを削除する場合は、この引数も指定しないといけません。
もし$argsが固定値だったならば、その値を指定してやればよいのですが、
固定値でない場合、$args値を取得する必要があります。
_get_cron_array()関数を使うと、現在登録中の全てのcronイベント情報が取得できます。
この中から、削除したいイベントの情報($args)を取得してます。
_get_cron_arrayで取得した値は以下のような配列で取得できます。
array(22) {
[16051237492]=> //これが登録されてる$timestampです。
array(1) {
["hogehoge_hook"]=> //これがフック名
array(1) {
["12345678dcc463e81346846ddc226"]=>
array(2) {
["schedule"]=>
bool(false)
["args"]=> //ここが第三引数の$args
array(1) {
[0]=>
int(1605507462)
}
}
}
},必要な情報が揃ったら、
wp_unschedule_event( int $timestamp, string $hook, array $args = array() )
します。
上記のサンプルコードでは、指定したフック(’削除したいフック名’)が全て削除できます。



コメント