我需要在我正在构建的 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 网站上发布了一份使用指南来帮助解决此类问题。