Xóa tất cả các sự kiện theo lịch trình với một hook cụ thể


8

Tôi có một số công việc định kỳ tất cả được nối vào cùng một hook, nhưng mỗi công việc có một đối số khác nhau (ID bài đăng). Nó xuất hiện wp_clear_scheduled_hookchỉ xóa công việc phù hợp với đối số được truyền với nó (hoặc công việc không có bất kỳ đối số nào, nếu không có đối số được cung cấp).

Có cách nào để xóa tất cả các công việc định kỳ liên quan đến một hook, bất kể đối số mà công việc đó có là gì không? (Không làm như vậy 'thủ công' bằng cách lặp qua ID).


Có vẻ như một câu trả lời đã bị xóa! Để làm rõ những gì tôi muốn đạt được: mỗi bài đăng có ngày hết hạn - và tôi muốn xóa bài đăng sau ngày này.

(Một tùy chọn thay thế là có một công việc định kỳ - lặp lại cứ sau 24 giờ xóa mọi bài viết đã hết hạn).

Tuy nhiên, tôi đã quyết định tạo một công việc một lần cho mỗi bài đăng - nhưng dường như bạn không thể xóa tất cả các công việc cùng một lúc mà không đạp xe qua chúng.

Câu trả lời:



10

Tôi vừa nhanh chóng viết hàm dưới đây, nó sẽ xóa tất cả các crons cho hook đã chỉ định, bất kể thời gian cron và đối số hook.

LƯU Ý: Tôi chưa KIỂM TRA chức năng, vì vậy vui lòng không chạy nó trên trang web trực tiếp của bạn.

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

Liên quan: http://core.trac.wordpress.org/ticket/18997


Cảm ơn Hameedullah. Tôi quyết định chọn tùy chọn thay thế, vì đó là cách WordPress xóa các bài đăng cũ. Tôi đã không kiểm tra chức năng của bạn, nhưng nó có vẻ đúng và sẽ thực hiện công việc. Cảm ơn một lần nữa.
Stephen Harris
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.