[WordPress] 程式化處理排程任務的做法

排程任務就是定時去執行處理的工作,像是每天清除垃圾訊息、每小時回報執行狀態...等等。

PHP 程式的做法是先確定是否需要執行這個排程,需要就加入事件 wp 去執行 auto_do_something,不需要就去判斷下一次需要執行的方法名稱,把它取消。

if ($flag == "yes") {
    add_action('wp', 'auto_do_something');
} else {
    if ($time = wp_next_scheduled('go_custom_update_cron')) {
        wp_unschedule_event($time, 'go_custom_update_cron');//抓到下次觸發的時間,然後取消
    }
}

進入註冊的方法 auto_do_something 判斷有沒有註冊過排程,有就忽略,沒有就給它註冊。

function auto_do_something() {
    //是否啟用自動推送的開關
    if (!wp_next_scheduled('go_custom_update_cron')) {
        wp_schedule_event(time(), 'go_custom_2h', 'go_custom_update_cron');
    }
}

在這邊需要自己客製化制定排程時間 go_custom_2h 的話,可以使用下面方法。

function mxp_add_cron_schedules($schedules) {
    $schedules['go_custom_2h'] = array(
        'interval' => 7200, // 2 hours in seconds.
        'display' => "兩小時一次",
    );
    return $schedules;
}
add_filter('cron_schedules', 'mxp_add_cron_schedules');

上述框架就是一個註冊的流程方法,比較需要想一下的是寫法。因為 WordPress 是每次請求都會將程式碼執行一次,如果每次執行都去註冊排程,這會有問題。所以會在關鍵點的地方去做檢查。

接下來主程式,也就是排程觸發後要被執行的那段。使用 add_action 方法註冊上述自行取事件名的方法名稱 go_custom_update_cron,確保該事件方法存在並能夠作業就好囉!

function mxp_auto_do_something(){
//主程式執行內容寫在這
}
add_action('go_custom_update_cron', 'mxp_auto_do_something');

以上~

Facebook 外掛功能


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[//////////____30%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *