特定のフックでスケジュールされたすべてのイベントを削除します


8

私はいくつかのcronジョブをすべて同じフックにフックしていますが、それぞれ異なる引数(投稿ID)を持っています。これは、表示されたwp_clear_scheduled_hookだけで(引数が指定されていない場合は、引数なしまたはジョブ)、それに渡された引数に一致する仕事をクリアします。

ジョブの引数に関係なく、フックに関連付けられたすべてのcronジョブを削除する方法はありますか?(IDをループすることによって「手動で」そうすることなく)。


回答が削除されたようです!私が達成したいことを明確にするために:各投稿には有効期限があります-そしてこの日付の後に投稿を削除したいと思います。

(別のオプションは、1つのcronジョブを持つことです-期限切れの投稿を削除する24時間ごとに繰り返します)。

ただし、投稿ごとに1回限りのジョブを作成することにしましたが、すべてのジョブを循環させずに一度にすべて削除することはできないようです。

回答:



10

以下の関数をすぐに書いたところ、cron時間とフック引数に関係なく、指定されたフックのすべてのcronがクリアされます。

注:この機能はまだテストしていないため、実際のサイトでは実行しないでください。

function wpse39681_clear_all_crons( $hook ) {
    $crons = _get_cron_array();
    if ( empty( $crons ) ) {
        return;
    }
    foreach( $crons as $timestamp => $cron ) {
        if ( ! empty( $cron[$hook] ) )  {
            unset( $crons[$timestamp][$hook] );
        }

        if ( empty( $crons[$timestamp] ) ) {
            unset( $crons[$timestamp] );
        }
    }
    _set_cron_array( $crons );
}

関連: http : //core.trac.wordpress.org/ticket/18997


Hameedullahに感謝します。WordPressが古いゴミ箱にある投稿を削除する方法なので、私は別のオプションを選択することにしました。私はあなたの機能をテストしていませんが、それは正しく見え、仕事をします。再度、感謝します。
スティーブンハリス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.