在WordPress中使用wp-cron插件來設(shè)置定時任務(wù)
PHP 本身是無法創(chuàng)建定時任務(wù)的,但是 WordPress 自帶了一個偽定時任務(wù)(Cron) API,非常的方便好用,包括 WordPress 本身的定時發(fā)布文章都依賴于這個 API
WP Cron 是什么? 是 WordPress 一套定時觸發(fā)機制, 可以循環(huán)安排任務(wù)執(zhí)行. 如: 定時發(fā)布新文章, 定期檢測版本等功能都是通過這個來實現(xiàn)的.
WP Cron 可以為我們實現(xiàn)什么? 我們可以循環(huán)更新和提交網(wǎng)站數(shù)據(jù), 節(jié)日定期向讀者發(fā)送賀卡或者表單 ...
它的原理就是將創(chuàng)建的定時任務(wù)存儲到數(shù)據(jù)庫里,當有人訪問的時候就去判斷一下是否到時間需要執(zhí)行這個定時任務(wù),如果到時間則執(zhí)行。
因為這種原理,所以執(zhí)行的時間可能會有一些偏差,但隨著網(wǎng)站的瀏覽量攀升和網(wǎng)絡(luò)爬蟲的不斷訪問,會讓定時任務(wù)執(zhí)行的時間越來越準確。
WP-Cron 效率不高, 但還是很方便好用的, 整理了一下相關(guān)函數(shù)的使用方法如下.
函數(shù)
wp_get_schedule
通過勾子別名, 獲取預(yù)定安排的勾子. 成功時返回循環(huán)周期類別 (hourly, twicedaily, daily, ...), 失敗時返回 false.
<?php wp_get_schedule( $hook, $args ) ?>
$hook: 勾子別名
$args: 勾子對應(yīng)函數(shù)的參數(shù)數(shù)組 (可選)
wp_get_schedules
WordPress 默認支持的循環(huán)周期類別有 hourly, twicedaily 和 daily. 通過該函數(shù)我們可以獲取所有這些循環(huán)周期數(shù)組.
<?php wp_get_schedules() ?>
在默認情況下, 由以上方法獲得的數(shù)組對象如下.
array( 'hourly' => array( 'interval' => 3600, 'display' => 'Once Hourly' ), 'twicedaily' => array( 'interval' => 43200, 'display' => 'Twice Daily' ), 'daily' => array( 'interval' => 86400, 'display' => 'Once Daily' ) )
我們可以向 cron_schedules 過濾器添加更多的類型. 添加例子如下:
add_filter('cron_schedules', 'cron_add_weekly'); function cron_add_weekly( $schedules ) { // Adds once weekly to the existing schedules. $schedules['weekly'] = array( 'interval' => 604800, // 1周 = 60秒 * 60分鐘 * 24小時 * 7天 'display' => __('Once Weekly') ); return $schedules; } wp_next_scheduled
通過勾子別名, 獲取預(yù)定安排的下一個運行時刻, 以整型返回. 常用于判斷是否已經(jīng)做了預(yù)定安排.
<?php $timestamp = wp_next_scheduled( $hook, $args ); ?>
$hook: 勾子別名
$args: 勾子對應(yīng)函數(shù)的參數(shù)數(shù)組 (可選)
wp_schedule_event
按周期循環(huán)預(yù)定安排一個 WordPress 勾子, 在預(yù)定時間觸發(fā)勾子對應(yīng)的函數(shù).
<?php wp_schedule_event($timestamp, $recurrence, $hook, $args); ?>
$timestamp: 時間 (整型)
$recurrence: 循環(huán)周期類別 (hourly, twicedaily, daily, ...)
$hook: 勾子別名
$args: 勾子對應(yīng)函數(shù)的參數(shù)數(shù)組 (可選)
wp_reschedule_event
按周期循環(huán)重新預(yù)定安排一個 WordPress 勾子. 但我發(fā)現(xiàn)這個方法不能正常使用, Codex 寫得很草, 如果哪位清楚知道怎么使用, 請告知一下.
wp_unschedule_event
通過預(yù)定時間和勾子別名, 取消預(yù)定的安排.
<?php wp_unschedule_event($timestamp, $hook, $args ); ?>
$timestamp: 時間 (整型)
$hook: 勾子別名
$args: 勾子對應(yīng)函數(shù)的參數(shù)數(shù)組 (可選)
wp_clear_scheduled_hook
通過勾子別名, 移除預(yù)定安排的勾子.
<?php wp_clear_scheduled_hook( $hook ); ?>
$hook: 勾子別名
wp_schedule_single_event
預(yù)定安排一個 WordPress 勾子, 在預(yù)定時間觸發(fā)勾子對應(yīng)的函數(shù). 與 wp_schedule_event 不同的是該方法的只安排一次觸發(fā), 不存在循環(huán)預(yù)定.
<?php wp_schedule_single_event($timestamp, $hook); ?>
$timestamp: 時間 (整型)
$args: 勾子對應(yīng)函數(shù)的參數(shù)數(shù)組 (可選)
從上面的函數(shù)可用的參數(shù)來看,我們就可以整理出以下幾個常用的參數(shù):
參數(shù)
$timestamp
(整數(shù))(必須)第一次執(zhí)行此定時任務(wù)的時間,需要傳一個時間戳,一般情況下都是當場執(zhí)行,但不能用 time() 函數(shù),而是用 WordPress 的時間函數(shù) current_time()。
默認值:None
$recurrence
(字符串)(必須)執(zhí)行頻率。每隔多長時間執(zhí)行一次??梢蕴顚?hourly (每小時執(zhí)行一次)、twicedaily (每天執(zhí)行兩次,也就是 12 小時執(zhí)行一次)和 daily (24 小時執(zhí)行一次)。
默認值:None
$hook
(字符串)(必須)執(zhí)行的鉤子。在執(zhí)行定時任務(wù)的時候會調(diào)用這個鉤子,往這個鉤子掛在函數(shù)即可實現(xiàn)定時執(zhí)行函數(shù)。
默認值:None
$args
(數(shù)組)(可選)傳遞的參數(shù),會被傳遞到掛載到定時鉤子的函數(shù)里的參數(shù)。
默認值:None
返回值
(布爾 | null)如果添加成功則返回 null,不成功則返回 False
例子
if( !wp_next_scheduled( 'test' ) ) wp_schedule_event( current_time( 'timestamp' ), 'twicedaily', 'test' );
首先使用 wp_next_scheduled() 函數(shù)判斷是否已經(jīng)創(chuàng)建,如果沒創(chuàng)建則創(chuàng)建一個定時任務(wù)。
把需要執(zhí)行的代碼掛載到 test 鉤子上就行了。
- WordPress中卸載插件以及移除文章類型組件的代碼示例
- 詳解WordPress中提醒安裝插件以及隱藏插件的功能實現(xiàn)
- WordPress中使主題支持小工具以及添加插件啟用函數(shù)
- 利用Fix Rss Feeds插件修復(fù)WordPress的Feed顯示錯誤
- 幾個優(yōu)化WordPress中JavaScript加載體驗的插件介紹
- 基礎(chǔ)的WordPress插件制作教程
- WordPress升級版本及安裝插件出現(xiàn)”Problem with the SSL CA cert”的解決辦法
- 推薦十款免費 WordPress 插件
- 用js代碼和插件實現(xiàn)wordpress雪花飄落效果的四種方法
- 在WordPress中安裝使用視頻播放器插件Hana Flv Player
相關(guān)文章
基于Codeigniter框架實現(xiàn)的student信息系統(tǒng)站點動態(tài)發(fā)布功能詳解
這篇文章主要介紹了基于Codeigniter框架實現(xiàn)的student信息系統(tǒng)站點動態(tài)發(fā)布功能,詳細分析了動態(tài)站點相關(guān)的數(shù)據(jù)庫sql語句、MVC各個模塊功能與實現(xiàn)技巧,需要的朋友可以參考下2017-03-03PHP?filesize()函數(shù)獲取文件大小信息用法實例
在PHP開發(fā)中,我們常常需要獲取文件的大小信息,而PHP提供了一個便捷的函數(shù)來實現(xiàn)這個目的——filesize()函數(shù),filesize()函數(shù)用于獲取指定文件的大小,返回值為文件的大?。ㄒ宰止?jié)為單位),本文將詳細介紹filesize()函數(shù)的用法,并提供具體的代碼示例2024-01-01使用composer 安裝 laravel框架的方法圖文詳解
這篇文章主要介紹了使用composer 安裝 laravel框架的方法,結(jié)合圖文說明的形式詳細分析了composer 安裝 laravel框架的具體步驟、相關(guān)命令與操作注意事項,需要的朋友可以參考下2019-08-08laravel-admin表單提交隱藏一些數(shù)據(jù),回調(diào)時獲取數(shù)據(jù)的方法
今天小編就為大家分享一篇laravel-admin表單提交隱藏一些數(shù)據(jù),回調(diào)時獲取數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10php版微信公眾平臺接口參數(shù)調(diào)試實現(xiàn)判斷用戶行為的方法
這篇文章主要介紹了php版微信公眾平臺接口參數(shù)調(diào)試實現(xiàn)判斷用戶行為的方法,可判斷出用戶訂閱、取消訂閱、發(fā)送信息等行為,涉及微信公眾平臺接口參數(shù)調(diào)試的相關(guān)操作技巧,需要的朋友可以參考下2016-09-09Laravel ORM對Model::find方法進行緩存示例詳解
這篇文章主要給大家介紹了關(guān)于Laravel ORM對Model::find方法進行緩存的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03php使用goto實現(xiàn)自動重啟swoole、reactphp、workerman服務(wù)的代碼
這篇文章主要介紹了php使用goto實現(xiàn)自動重啟swoole、reactphp、workerman服務(wù)的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04