我创建了一个带有cron的插件,每5分钟更新一次特定类型的所有帖子。我安装了WP Crontrol来检查cron是否注册正确,一切似乎都正常。
这是我注册cron的方式:
function custom_cron_interval( $schedules ) {
$schedules[\'fiveminutes\'] = array(
\'interval\' => 300,
\'display\' => __(\'Every five minutes\')
);
return $schedules;
}
add_filter( \'cron_schedules\', \'custom_cron_interval\' );
if ( ! wp_next_scheduled( \'recalculate_all_scores\' ) ) {
wp_schedule_event(time(), \'fiveminutes\', \'recalculate_all_scores\');
}
它已正确注册,但当函数执行时,不会发生任何事情。出于测试目的,我将函数挂接到save\\u post操作。这样一切都很好。但是,当调用计划任务时,它将不会执行。
这是函数的代码
function recalculate_all_scores() {
global $wpdb;
$customers = $wpdb->get_results("SELECT * FROM wp_posts
WHERE post_type = \'customer\'
AND post_status = \'publish\';");
foreach ($customers as $customer){
set_score($customer);
}
}
function set_score($customer){
$acf_key = "score";
$score = rand(0,50);
update_field( $acf_key, $score, $customer->ID );
}
我还将以下几行添加到我的wp配置中。php:
define(\'ALTERNATE_WP_CRON\', true);
define(\'DISABLE_WP_CRON\', false);
知道是什么阻止了函数的执行吗?
EDIT
<我知道wp\\U cron系统不是真正的cron,它依赖于现场访问如果手动执行该函数,大约需要15秒,因此PHP执行时间限制应该不会有问题