我添加了一个自定义间隔,如下所示
当我提交之后,我使用$ _POST
获得了值add_filter( 'cron_schedules', 'my_cron_custom_hook' );
function my_cron_custom_hook( $schedules ) {
if (isset($_POST['expiry'])) {
$settings = $_POST['expiry'];
$expiry = $settings['expiry']; -- > got the value
}
$schedules['specific_time'] = array(
'interval' => $expiry,--> (Got value here)
'display' => __('Specific Time')
);
}
在这种情况下,我得到 $ expiry
的值 add_filter( 'cron_schedules', 'my_cron_custom_hook' );
function my_cron_custom_hook( $schedules ) {
$settings = get_option( 'from_value' );
$expiry = $settings['expiry'];
$schedules['specific_time'] = array(
'interval' => $expiry,--> (can't get the value here)
'display' => __('Specific Time')
);
}
我无法获得 $ expiry
的价值当我点击提交按钮时,只有$ expiry值可见。 这是什么解决方案?
答案 0 :(得分:1)
您的表单需要先在选项表中保存$expiry
。为此,使用一个操作(例如:admin_init
,如果表单在管理端验证)可以触发此代码,
add_action('admin_init', 'save_expiry');
function save_expiry(){
if(isset($_POST['expiry']){
update_option('from_value[expiry]', $_POST['expiry']);
}
}
然后,在cron_schedules
过滤器中,您将能够获得选项值。
$settings = get_option('from_value');
$expiry = (!isset($settings['expiry']) && $settings['expiry']=='')? 'daily' : $settings['expiry'];