Cron时间表间隔通过插件选项?

时间:2015-09-21 作者:Rutwick Gangurde

我的插件在插件激活时设置了一个CRON作业,每5分钟运行一次。我想在我的插件设置页面中提供一个部分,用户可以在其中指定间隔。我该怎么做?我正在使用cron_schedules 筛选以添加自定义CRON计划。我正在考虑使用它来获取用户设置的CRON interval的选项值。这样做对吗?如果没有,我应该怎么做?

更新时间:

//done in plugin activation
if ( !wp_next_scheduled( \'my_custom_event\' ) ) {
    wp_schedule_event( time(), \'everyminute\', \'my_custom_event\' );
}

add_filter( \'cron_schedules\', \'add_cron_schedule\' );
add_action( \'my_custom_event\',  \'cron_data_update\' );

//This is where I get the value set from the plugin settings
function add_cron_schedule( $schedules ) {
    $my_settings = get_option( \'my-settings\' );
    $period = ( isset( $my_settings[\'my-cron-interval\'] ) && $my_settings[\'my-cron-interval\'] != \'\' ) ? $my_settings[\'my-cron-interval\'] : 30;

    $schedules[\'everyminute\'] = array(
        \'interval\' => MINUTE_IN_SECONDS * $period,
        \'display\' => __(\'My Schedule\')
    );

    return $schedules;
}

function cron_data_update() {
    //do something
}
如您所见,我正在通过插件设置页面获取用户设置的值。如果未设置任何内容,则默认使用30分钟。这样做对吗?

1 个回复
SO网友:Edward

是的,在我看来,这正是延长默认时间表时间的正确方法。对于显示值,我会提供更多信息,但我认为这只是示例代码。

However, 应该考虑到一件重要的事情。如果减少计划执行的时间间隔,作为http请求副作用调用的默认WordPress计划实现将对站点性能产生更大的影响。因此,您应该最迟在此时将调度执行移到cron作业。您可以在此处详细阅读:https://medium.com/write-better-wordpress-code/optimized-use-of-schedules-c18c3c1383e9