WordPress 添加定时任务

在 WordPress 中使用 cron_schedules 来添加一个定时任务:

在 functions.php 文件的末尾添加以下代码:

function my_every_time( $schedules ) {
    $schedules['every_time'] = array(
        'interval'  => 10,
        'display'   => __('每隔一分钟')
    );
    return $schedules;
}
add_filter( 'cron_schedules', 'my_every_time' );

以上代码使用 add_filter 将一个自定义的任务间隔 daily 添加到 WordPress 的定时任务列表中。interval 设置间隔时间,单位秒。

 

function my_every_time_task() {
    file_put_contents('filename.txt', "\n执行时间:".date('Y-m-d H:i:s', time()), FILE_APPEND);
}
add_action( 'my_every_time', 'my_every_time_task' );

定义了一个 my_every_time_task 的函数,然后使用 add_action 函数将该函数与一个自定义的事件 my_daily_event 关联起来。

 

if ( ! wp_next_scheduled( 'my_every_time' ) ) {
    wp_schedule_event( time(), 'every_time', 'my_every_time' );
}

使用 wp_next_scheduled 函数来检查是否已经计划了该事件。如果尚未计划,我们使用 wp_schedule_event 函数来将事件执行一次。

 

备注:

WP-Cron 是根据网站页面加载触发的,任务只会在一个用户访问该站点时执行。例如,如果您希望在上午 9:00 执行任务,但此时没有用户访问页面加载,则该任务将在下次访问时执行。并且由于 WP-Cron 在每次页面加载时都会检查 cron 作业,在高流量网站上,会导致服务器资源占用过多。

 

如果用户访问量比较低,想按时执行任务,就可以使用 cron 了,方法如下:

# 直接执行PHP文件
0,30 * * * * php -q /www/test.com/wp-cron.php

# 请求链接
*/15 * * * * root /usr/bin/wget -q --post-data '' http://test.com/wp-cron.php?doing_wp_cron -O /dev/null

 

在 wp-config.php 中添加 define('DISABLE_WP_CRON', true); 可以关闭 WP-Cron。

修改时间 2024-05-12

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
WordPress 发送邮件
Node.js readline 模块
JavaScript Global 对象
WordPress用户的user_login, user_nicename, display_name 和 nickname有什么区别
WordPress 函数 get_categories() 获取所有分类
Land 主题
表驱动方法
JavaScript Date 类型