本篇文章更新時間:2019/05/31
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
排程任務就是定時去執行處理的工作,像是每天清除垃圾訊息、每小時回報執行狀態...等等。
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');
以上~