我需要一个调度程序,以自动更新一个WordPress网站与新的csv后,一定的时间间隔。
我发现了很多wp_schedule_event
但所有人都在激活插件时创建cron作业。如果我也这样做,那么代码就会执行。但我的要求是将其安排在管理员提交表单时。
我的要求是:
插件激活后,管理员将选择间隔。在提交此表单时,我想将时间表设置为自动检查csv的间隔(由管理员选择),以便通过新csv自动更新站点。
在表单提交中,我调用了一个php页面。在这一页上,我编写了以下代码:
$interval=$_POST[\'select_interval\'];
require_once (str_replace ( \'//\', \'/\', dirname ( __FILE__ ) . \'/\' ) . \'../../../wp-config.php\');
if( !wp_next_scheduled( \'mycronjob\' ) ) {
wp_schedule_event( time(), $interval, \'cronjob\',$arguments);
}
}
add_action (\'cronjob\', \'update_csvSchedular\');
function update_csvSchedular($args){
//code to check for csv
}
SO网友:Ehsaan
执行是错误的wp_schedule_event
插件激活和cronjob
标签正确的挂钩标签是wp
.
WordPress内部cron系统采用“请求-响应”方式工作,它在向整个系统发出任何请求后立即检查预定事件,在检查预定事件后,加载系统的下一部分。
因此,将计划挂接到init
太早了cronjob
, 插件激活等都太晚了,他们可能会工作,但这不是正确的方式。
根据用户给定的数据安排事件的最佳方法是从数据库中获取数据,您可以在数据库中保存管理员给定的设置(例如update_option
) 并按给定值安排事件(get_option
) 连接到wp
标签
例如:
add_action( \'wp\', \'my_scheduled_event\' );
function my_scheduled_event() {
$interval = get_option( \'task_interval\' );
if ( ! wp_next_scheduled( \'my_daily_task\' ) )
wp_schedule_event( time(), $interval, \'my_daily_task\' );
}