如何使用 Action Scheduler WordPress 作业队列

Tin*_*ger 4 wordpress

我需要在我正在构建的 WordPress 插件中实现批处理,因为其中一个功能需要大量处理时间(API 查询、图像下载、插入帖子等)。

动作调度器看起来是一个很好的解决方案,但我对如何实现它感到困惑。

我安装了该插件,自述文件说我可以使用各种功能,例如as_schedule_single_action( $timestamp, $hook, $args, $group )处理任务。

如何使用这样的函数对批量任务进行排队?

例如,我如何使用 Action Scheduler 将这些任务排队以在后台运行:

$lower_case_names = array('mary', 'bob', 'trent', 'bill', 'jane');

function make_names_uppercase ($lower_case_names) {
    $upper_case_names = array();
    foreach ($lower_case_names as $name) {
        $upper_case_names[] = strtoupper($name);
    }
    return $upper_case_names;
}
Run Code Online (Sandbox Code Playgroud)

小智 6

要通过操作计划程序运行make_names_uppercase(),您需要首先将操作/挂钩添加到队列中,然后将您的make_names_uppercase()函数作为回调附加到该计划的操作。

这意味着代码如下:

$names = array( 'mary', 'bob', 'trent', 'bill', 'jane' );

// Schedule an action name 'make_names_uppercase_action' with specific first name data
as_schedule_single_action( time(), 'make_names_uppercase_action', array( 'names' => $names ) );

add_action( 'make_names_uppercase_action', 'make_names_uppercase', 10, 1 );
Run Code Online (Sandbox Code Playgroud)

然后,该make_names_uppercase()函数将接收一个参数,$names即 Action Scheduler 触发'make_names_uppercase_action'挂钩时的数组。

我想我应该在这里以及GitHub 上回答,因为 Stackoverflow 的索引比 GitHUb 更好。

我还在新的Action Scheduler 网站上发布了一份使用指南来帮助解决此类问题。