您需要以不同的方式安排活动。在你的方法中wp
安排事件,这意味着每次调用WordPress时都会调用它,将您的选项设置回原位。
我不太确定时间表是否推迟,或者您是否以这种方式创建了多个时间表,但这是不正确的。
您应该检查是否计划了此事件(使用wp_next_scheduled()
), 并且只有当此函数返回false时才安排,以避免多个条目/延迟问题。
我还将使用两个不同的选项来检查是否调用了这些函数,因为由于此系统的体系结构,一旦启动了计划的函数,值就会发生更改-只有在下次调用WordPress时才会被覆盖,因为没有计划任何事件。
我还为optionvalue添加了一个时间,以检查它是何时注册的。我总是喜欢知道调试方面的事情。
脚本(包括注册新计划)如下所示:
add_filter( \'cron_schedules\', \'f711_add_quarter_hour_cron_schedule\' );
function f711_add_quarter_hour_cron_schedule( $schedules ) {
$schedules[\'quarter_hour\'] = array(
\'interval\' => 900, // Time in seconds
\'display\' => __( \'Quarter Hour\' ),
);
return $schedules;
}
if ( ! wp_next_scheduled( \'ig_fetch_new_posts_hook\' ) ) { // check if function is scheduled
wp_schedule_event( time(), \'quarter_hour\', \'ig_fetch_new_posts_hook\' ); // if not, schedule it
update_option(\'test_scheduled\', \'scheduled\' . time() ); // set your scheduleoption to scheduled
}
add_action( \'ig_fetch_new_posts_hook\', \'ig_fetch_new_posts\' ); // define the hook for the schedule
function ig_fetch_new_posts() { // your updatemagic
update_option(\'test_fired\', \'Fired\' . time() );
// Run function
}