国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > Wordpress > 正文

在WordPress中使用wp-cron插件來設置定時任務

2024-09-07 00:48:14
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了在WordPress中使用wp-cron插件來設置定時任務的方法,文中給出了幾個常用的相關PHP函數和參數,需要的朋友可以參考下。

PHP 本身是無法創建定時任務的,但是 WordPress 自帶了一個偽定時任務(Cron) API,非常的方便好用,包括 WordPress 本身的定時發布文章都依賴于這個 API

WP Cron 是什么? 是 WordPress 一套定時觸發機制, 可以循環安排任務執行. 如: 定時發布新文章, 定期檢測版本等功能都是通過這個來實現的.

WP Cron 可以為我們實現什么? 我們可以循環更新和提交網站數據, 節日定期向讀者發送賀卡或者表單 ...

它的原理就是將創建的定時任務存儲到數據庫里,當有人訪問的時候就去判斷一下是否到時間需要執行這個定時任務,如果到時間則執行。

因為這種原理,所以執行的時間可能會有一些偏差,但隨著網站的瀏覽量攀升和網絡爬蟲的不斷訪問,會讓定時任務執行的時間越來越準確。

WP-Cron 效率不高, 但還是很方便好用的, 整理了一下相關函數的使用方法如下.

函數

wp_get_schedule

通過勾子別名, 獲取預定安排的勾子. 成功時返回循環周期類別 (hourly, twicedaily, daily, ...), 失敗時返回 false.

<?php wp_get_schedule( $hook, $args ) ?>

$hook: 勾子別名

$args: 勾子對應函數的參數數組 (可選)

wp_get_schedules

WordPress 默認支持的循環周期類別有 hourly, twicedaily 和 daily. 通過該函數我們可以獲取所有這些循環周期數組.

<?php wp_get_schedules() ?>

在默認情況下, 由以上方法獲得的數組對象如下.

  1. array
  2.  'hourly' => array
  3.  'interval' => 3600, 
  4.  'display' => 'Once Hourly' 
  5.  ), 
  6.  'twicedaily' => array
  7.  'interval' => 43200, 
  8.  'display' => 'Twice Daily' 
  9.  ), 
  10.  'daily' => array
  11.  'interval' => 86400, 
  12.  'display' => 'Once Daily' 
  13.  ) 

我們可以向 cron_schedules 過濾器添加更多的類型. 添加例子如下:

  1. add_filter('cron_schedules''cron_add_weekly');  
  2. function cron_add_weekly( $schedules ) 
  3.  // Adds once weekly to the existing schedules. 
  4.  $schedules['weekly'] = array
  5.  'interval' => 604800, // 1周 = 60秒 * 60分鐘 * 24小時 * 7天 
  6.  'display' => __('Once Weekly'
  7.  ); 
  8.  return $schedules
  9. wp_next_scheduled 

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

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

$hook: 勾子別名

$args: 勾子對應函數的參數數組 (可選)

wp_schedule_event

按周期循環預定安排一個 WordPress 勾子, 在預定時間觸發勾子對應的函數.

<?php wp_schedule_event($timestamp, $recurrence, $hook, $args); ?>

$timestamp: 時間 (整型)

$recurrence: 循環周期類別 (hourly, twicedaily, daily, ...)

$hook: 勾子別名

$args: 勾子對應函數的參數數組 (可選)

wp_reschedule_event

按周期循環重新預定安排一個 WordPress 勾子. 但我發現這個方法不能正常使用, Codex 寫得很草, 如果哪位清楚知道怎么使用, 請告知一下.

wp_unschedule_event

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

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

$timestamp: 時間 (整型)

$hook: 勾子別名

$args: 勾子對應函數的參數數組 (可選)

wp_clear_scheduled_hook

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

<?php wp_clear_scheduled_hook( $hook ); ?>

$hook: 勾子別名

wp_schedule_single_event

預定安排一個 WordPress 勾子, 在預定時間觸發勾子對應的函數. 與 wp_schedule_event 不同的是該方法的只安排一次觸發, 不存在循環預定.

<?php wp_schedule_single_event($timestamp, $hook); ?>

$timestamp: 時間 (整型)

$args: 勾子對應函數的參數數組 (可選)

從上面的函數可用的參數來看,我們就可以整理出以下幾個常用的參數:

參數

$timestamp

(整數)(必須)第一次執行此定時任務的時間,需要傳一個時間戳,一般情況下都是當場執行,但不能用 time() 函數,而是用 WordPress 的時間函數 current_time()。

默認值:None

$recurrence

(字符串)(必須)執行頻率。每隔多長時間執行一次。可以填寫 hourly (每小時執行一次)、twicedaily (每天執行兩次,也就是 12 小時執行一次)和 daily (24 小時執行一次)。

默認值:None

$hook

(字符串)(必須)執行的鉤子。在執行定時任務的時候會調用這個鉤子,往這個鉤子掛在函數即可實現定時執行函數。

默認值:None
$args

(數組)(可選)傳遞的參數,會被傳遞到掛載到定時鉤子的函數里的參數。

默認值:None

返回值

(布爾 | null)如果添加成功則返回 null,不成功則返回 False

例子:

if( !wp_next_scheduled( 'test' ) ) wp_schedule_event( current_time( 'timestamp' ), 'twicedaily', 'test' );

首先使用 wp_next_scheduled() 函數判斷是否已經創建,如果沒創建則創建一個定時任務。

把需要執行的代碼掛載到 test 鉤子上就行了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新源县| 恭城| 蒙城县| 溆浦县| 云梦县| 台江县| 江油市| 乌鲁木齐市| 永靖县| 获嘉县| 安溪县| 金塔县| 柳河县| 揭东县| 永吉县| 通辽市| 延寿县| 崇阳县| 曲水县| 阜康市| 若羌县| 通河县| 和顺县| 司法| 道孚县| 邻水| 厦门市| 塔河县| 汉寿县| 慈溪市| 张掖市| 靖安县| 阿合奇县| 上饶县| 望江县| 成都市| 佛坪县| 册亨县| 诸城市| 蒙城县| 墨脱县|