溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

WordPress中怎么利用wp-cron插件設(shè)置定時任務(wù)

發(fā)布時間:2021-07-23 14:26:12 來源:億速云 閱讀:309 作者:Leah 欄目:開發(fā)技術(shù)

WordPress中怎么利用wp-cron插件設(shè)置定時任務(wù),相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

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

通過勾子別名, 獲取預定安排的勾子. 成功時返回循環(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

通過勾子別名, 獲取預定安排的下一個運行時刻, 以整型返回. 常用于判斷是否已經(jīng)做了預定安排.

<?php $timestamp = wp_next_scheduled( $hook, $args ); ?>

$hook: 勾子別名
$args: 勾子對應(yīng)函數(shù)的參數(shù)數(shù)組 (可選)

wp_schedule_event

按周期循環(huán)預定安排一個 WordPress 勾子, 在預定時間觸發(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)重新預定安排一個 WordPress 勾子. 但我發(fā)現(xiàn)這個方法不能正常使用, Codex 寫得很草, 如果哪位清楚知道怎么使用, 請告知一下.

wp_unschedule_event

通過預定時間和勾子別名, 取消預定的安排.

<?php wp_unschedule_event($timestamp, $hook, $args ); ?>
$timestamp: 時間 (整型)
$hook: 勾子別名
$args: 勾子對應(yīng)函數(shù)的參數(shù)數(shù)組 (可選)

wp_clear_scheduled_hook

通過勾子別名, 移除預定安排的勾子.

<?php wp_clear_scheduled_hook( $hook ); ?>
$hook: 勾子別名

wp_schedule_single_event

預定安排一個 WordPress 勾子, 在預定時間觸發(fā)勾子對應(yīng)的函數(shù). 與 wp_schedule_event 不同的是該方法的只安排一次觸發(fā), 不存在循環(huán)預定.

<?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ù)。

看完上述內(nèi)容,你們掌握WordPress中怎么利用wp-cron插件設(shè)置定時任務(wù)的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI