WordPressのCronスケジュール登録で第三引数argsを指定したイベントの削除方法

本ページにはプロモーションが含まれています。
WordPress

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() )

します。

上記のサンプルコードでは、指定したフック(’削除したいフック名’)が全て削除できます。

コメント

タイトルとURLをコピーしました