- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章在WordPress中使用wp-cron插件来设置定时任务由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
PHP 本身是无法创建定时任务的,但是 WordPress 自带了一个伪定时任务(Cron) API,非常的方便好用,包括 WordPress 本身的定时发布文章都依赖于这个 API 。
WP Cron 是什么? 是 WordPress 一套定时触发机制, 可以循环安排任务执行. 如: 定时发布新文章, 定期检测版本等功能都是通过这个来实现的. 。
WP Cron 可以为我们实现什么? 我们可以循环更新和提交网站数据, 节日定期向读者发送贺卡或者表单 ... 。
它的原理就是将创建的定时任务存储到数据库里,当有人访问的时候就去判断一下是否到时间需要执行这个定时任务,如果到时间则执行.
因为这种原理,所以执行的时间可能会有一些偏差,但随着网站的浏览量攀升和网络爬虫的不断访问,会让定时任务执行的时间越来越准确.
WP-Cron 效率不高, 但还是很方便好用的, 整理了一下相关函数的使用方法如下. 。
函数 。
wp_get_schedule 。
通过勾子别名, 获取预定安排的勾子. 成功时返回循环周期类别 (hourly, twicedaily, daily, ...), 失败时返回 false. 。
1
|
<?php wp_get_schedule(
$hook
,
$args
) ?>
|
$hook: 勾子别名 $args: 勾子对应函数的参数数组 (可选) 。
wp_get_schedules 。
WordPress 默认支持的循环周期类别有 hourly, twicedaily 和 daily. 通过该函数我们可以获取所有这些循环周期数组. 。
1
|
<?php wp_get_schedules() ?>
|
在默认情况下, 由以上方法获得的数组对象如下. 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
array
(
'hourly'
=>
array
(
'interval'
=> 3600,
'display'
=>
'Once Hourly'
),
'twicedaily'
=>
array
(
'interval'
=> 43200,
'display'
=>
'Twice Daily'
),
'daily'
=>
array
(
'interval'
=> 86400,
'display'
=>
'Once Daily'
)
)
|
我们可以向 cron_schedules 过滤器添加更多的类型. 添加例子如下
1
2
3
4
5
6
7
8
9
10
11
|
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
|
通过勾子别名, 获取预定安排的下一个运行时刻, 以整型返回. 常用于判断是否已经做了预定安排. 。
1
|
<?php
$timestamp
= wp_next_scheduled(
$hook
,
$args
); ?>
|
$hook: 勾子别名 $args: 勾子对应函数的参数数组 (可选) 。
wp_schedule_event 。
按周期循环预定安排一个 WordPress 勾子, 在预定时间触发勾子对应的函数. 。
1
|
<?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 不同的是该方法的只安排一次触发, 不存在循环预定. 。
1
|
<?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 。
例子 。
1
|
if
( !wp_next_scheduled(
'test'
) ) wp_schedule_event( current_time(
'timestamp'
),
'twicedaily'
,
'test'
);
|
首先使用 wp_next_scheduled() 函数判断是否已经创建,如果没创建则创建一个定时任务.
把需要执行的代码挂载到 test 钩子上就行了.
最后此篇关于在WordPress中使用wp-cron插件来设置定时任务的文章就讲到这里了,如果你想了解更多关于在WordPress中使用wp-cron插件来设置定时任务的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试在我正在处理的博客上使用类别帖子 (WP-CPL) 插件来按类别过滤“最近的帖子”。基本上,当有人点击博客上的类别名称时,我希望它显示该类别的帖子。这将通过 Life Is Simple 模
我的形象 我只想为某些用户隐藏特定页面。 function remove_menus(){ // get current login user's role $roles = wp_g
我的形象 我只想为某些用户隐藏特定页面。 function remove_menus(){ // get current login user's role $roles = wp_g
我为我的 wp 网站创建了一个简单的脚本,我正在尝试从 2 个表的 wp 数据库中获取正确的数据,这是代码, 当我显示“user_ref_id”列的结果重复多次时,这是代码 global $wpdb;
我安装了一个名为 Hide My WP 的插件来更改网站结构,但考虑到我使用的是自定义主题,它破坏了一些功能。所以我手动从plugins文件夹中删除了插件,但是从那以后我就无法访问/wp-admin/
我试图从头开始创建 WXR 文件(WordPress eXtended Rss)。 我的代码基于 XML/ wordpress生成的WXR文件并像这样开始: 我是这样开始的: $newxml =
我想将所有页面重定向到 http://www.expample2.com除了 wp-admin 和 wp-json。 例如,用户能够登录 http://www.example1.com/wp-admi
我使用 MAMP 在本地构建了一个快速的 WordPress 网站,然后将其 checkin SVN 存储库。然后我将其检查到我的开发服务器上。 除了运行 search and replace too
在搜索端点的 WP REST API (wp json) 中: https://www.example.com/wp-json/wp/v2/search?search=searchPhrase&_em
我正在使用这个 NGINX 规则来强制 WordPress 网站的尾部斜杠: rewrite ^([^.]*[^/])$ $1/ permanent; 但是这个规则给 Gutenberg 和 wp-j
在搜索端点的 WP REST API (wp json) 中: https://www.example.com/wp-json/wp/v2/search?search=searchPhrase&_em
我正在使用这个 NGINX 规则来强制 WordPress 网站的尾部斜杠: rewrite ^([^.]*[^/])$ $1/ permanent; 但是这个规则给 Gutenberg 和 wp-j
我想限制所有用户访问 WordPress 网站登录。 例如:假设我有 WordPress 网站域 example1.com,我想限制所有用户使用 example1.com/wp- 访问管理员登录adm
尝试实现这里讨论的技术, http://z9.io/2013/10/21/shiny-new-dynamic-content-wp-super-cache/ 进入使用 Genesis 框架的站点。我想
我试图在位于我的 WP 主题文件夹内的 PHP 文件中调用自定义 AJAX 函数,但是我无法让它检索输出。我认为问题在于将 WP 查询链接到主 WP 文件? $.ajax({ url: "../../
我正在编写一个 perl 脚本,用于将 Wordpress 安装从一个地方迁移到另一个地方。在这项工作中,我需要使用 wp-cli 调用从 wp-config 文件中获取 wordpress 数据库名
我最近更改了我的 WordPress 网站上的目录。我导出了数据库,搜索并替换了旧 URL 为新 URL,然后重新导入。该网站的前端工作正常,但任何页面的后端都需要近 15 秒才能加载。 从funct
我使用下面的代码通过类似的单词标签获取帖子但不起作用 $query = " SELECT * FROM $wpdb->posts , $wpdb->terms
我已经通过 DirectAdmin 在我的服务器上安装了 SSL 证书。这似乎运作良好。 我已将 wp_*_options 表中的 url 更改为 https://mydomain.nl 等。突然我的
我正在建立一个网站,使用 wordpress+buddypress(最新版本)。 在这个网站中,我有自己的自定义登录|注册|重置密码表单,我不想将它们链接到后端 wp-forms。 我已经阻止了所有用
我是一名优秀的程序员,十分优秀!