Hapus semua acara yang dijadwalkan dengan kail tertentu

8

Saya memiliki beberapa pekerjaan cron yang terhubung ke hook yang sama, tetapi masing-masing dengan argumen yang berbeda (ID postingan). Tampaknya wp_clear_scheduled_hookhanya membersihkan pekerjaan yang cocok dengan argumen yang diterimanya (atau pekerjaan tanpa argumen apa pun, jika tidak ada argumen yang diberikan).

Apakah ada cara untuk menghapus semua pekerjaan cron yang terkait dengan sebuah kail, terlepas dari argumen yang dimiliki pekerjaan tersebut? (Tanpa melakukannya 'secara manual' dengan perulangan melalui ID).


Tampaknya jawaban telah dihapus! Untuk memperjelas apa yang ingin saya capai: setiap posting memiliki tanggal kedaluwarsa - dan saya ingin menghapus posting setelah tanggal ini.

(Opsi alternatif adalah memiliki satu pekerjaan cron - diulang setiap 24 jam yang menghapus semua kiriman yang kedaluwarsa).

Namun, saya memutuskan untuk membuat pekerjaan satu kali untuk setiap posting - tetapi tampaknya Anda tidak dapat menghapus semua pekerjaan sekaligus tanpa melalui mereka.

Stephen Harris
sumber

Jawaban:

10

Saya baru saja dengan cepat menulis fungsi di bawah ini, ini akan menghapus semua crons untuk hook yang ditentukan, terlepas dari waktu cron dan argumen hook.

CATATAN: Saya belum menguji fungsi ini, jadi jangan menjalankannya di situs langsung Anda.

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

Terkait: http://core.trac.wordpress.org/ticket/18997

Hameedullah Khan
sumber
Terima kasih Hameedullah. Saya memutuskan untuk memilih opsi alternatif, karena itulah cara WordPress menghapus postingan yang sudah dibuang. Saya belum menguji fungsi Anda, tetapi kelihatannya benar dan akan melakukan pekerjaan itu. Terima kasih lagi.
Stephen Harris