通过表单提交激活cron时,wp-cron函数未运行

时间:2016-01-01 作者:hkc

我正在激活cronform 提交按钮(不是在插件激活时)。因此,用户可以选择是否设置cron。

但它不会触发函数。设置了cron,但触发了该函数。在通过cron时间加载cron函数之后,我已经加载/访问了该站点好几次。

这是我的密码,

function obs_register_menu() {
    add_menu_page( .. \'obs_plugin_fn\'... ); // obs_plugin_fn is the function for the plugin page
}

add_action(\'admin_menu\',\'obs_register_menu\'); //add menu

function obs_plugin_fn(){ global $wpdb;

    if(!empty($_POST) && ($_POST[\'obs_daily_cron_activate\']) && !wp_next_scheduled( \'obs_daily_cron\' )) { //activate cron on submit
wp_schedule_event(strtotime("now"), \'daily\', \'obs_daily_cron\');
}

    if(!empty($_POST) && ($_POST[\'obs_daily_cron_deactivate\']) && wp_next_scheduled( \'obs_daily_cron\' )) { // de-activate cron on submit
wp_clear_scheduled_hook(\'obs_daily_cron\');
}

    if ( !wp_next_scheduled( \'obs_daily_cron\' ) ) {

echo \'<form action="" method="post">
<input type="submit" name="obs_daily_cron_activate" class="button button-primary" value="Activate daily cron">
</form>\'; // submitting this activate the cron
}
else{
echo \'<form action="" method="post">
<input type="submit" name="obs_daily_cron_deactivate" class="button button-primary" value="Deactivate daily cron">
</form>\'; // submitting this de-activate the cron
}

// cron schedule

add_action(\'obs_daily_cron\', \'obs_daily_cron_fn\');

function obs_daily_cron_fn() {
// do something every day
}

} // end plugin function`

1 个回复
最合适的回答,由SO网友:hkc 整理而成

我想出来了。

我用过function obs_daily_cron_fn() 内部function obs_plugin_fn(). 因此,在插件页面打开之前,该功能不会被触发。

现在移动function obs_daily_cron_fn() 超出function obs_plugin_fn() 工作正常。