为什么$INPUT(设置API)可能是空的?

时间:2011-05-12 作者:ZaMoose

我试图成为一个好的主题生成器,并通过设置API传递所有设置,但在清理回调函数中遇到了一些困难。

问题的核心是:默认情况下传入的$输入变量为空。我的$\\u POST[选项组]进展顺利(它拥有我期望在$input中看到的所有内容),但是,同样,$input是空的。我从哪里开始调试这个呢?

EDIT 1

作为对Chip的回应,以下是我的观点(显然是存根):

function lblg_sanitize_options( $input ){
global $lblg_shortname, $lblg_default_options;

echo "Input: ";
print_r($input);
如果我使用Oenology和print_r($input);, 我得到了预期的Array(

EDIT 2

以下是print_r($_REQUEST); 对于我的主题:

Array ( [option_page] => lblg_options [action] => update [_wpnonce] => 1f96eb2410 [_wp_http_referer] => /wp-admin/themes.php?page=lblg_options [lblg_options] => Array ( [layout_stylesheet] => Select a layout: [alt_stylesheet] => *none* [use_custom_header] => true [display_footer_copyright] => true [footer_copyright] => [footer_credit_text] => [save] => Save changes ) )
这是关于葡萄酒学的:

Array ( [option_page] => theme_oenology_options [action] => update [_wpnonce] => 748c46a1a1 [_wp_http_referer] => /wp-admin/themes.php?page=oenology-settings [theme_oenology_options] => Array ( [header_nav_menu_position] => below [header_nav_menu_depth] => 1 [display_social_icons] => on [rss_feed] => rss2 [facebook_profile] => [flickr_profile] => [linkedin_profile] => [myspace_profile] => [twitter_profile] => [youtube_profile] => [display_footer_credit] => false [submit-general] => Save Settings ) )
我看不出有什么不同。你能吗?

EDIT 3

不同的slug/短名称/页面名称可能会有冲突吗?

EDIT 4

以下是我注册的步骤:

function lblg_admin_init(){
    global $lblg_shortname;
    register_setting( \'lblg_options\', $lblg_shortname . \'_lblg_options\', \'lblg_sanitize_options\' );
}
这是我要说的,内部期权表:

settings_fields( \'lblg_options\' ); 
do_settings_sections( \'lblg_options\' );
设置本身都以类似于以下方式在一个大循环中注册:

add_settings_field( $key, $value[\'name\'], \'\', \'lblg_options\', $section );
还有什么想法?

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

通过回答芯片回答我自己的问题已经嵌入了他的优秀settings tutorial, 也就是说:这都是关于关联函数参数的。显然,我使用的一些变量名/选项组名排列不正确。

SO网友:Chip Bennett

这个$input 变量不是通过默认值传递给validate函数的。您需要声明它,例如,notthis

function mytheme_validate_settings() {}
但实际上,this:

function mytheme_validate_settings( $input ) {}
(或者我可能是唯一一个犯过这种愚蠢错误的人:)

编辑:

要检查的另一件事是:$optiongroup 在里面register_setting() 匹配传递给的参数settings_fields() 在表单标记中?

结束

相关推荐

如何从wp_Options中的多维数组中检索多个值?

我刚刚开始在wp\\U选项中以多维数组存储数据,我需要一些帮助来检索一些数据。。。我的数据位于下面,存储为option\\u name“My\\u category\\u fields”我需要提取一个类别ID字符串,其中my\\u cat\\u hide设置为true。我把我的职能放在这里了。我如何完成它?function get_hidden_cats() { $my_cats = get_option(\'ce4_category_fields\'); //how do