我正试图为我的wordpress网站创建一个非常简单的选项页面,其中只包含一个选项-货币的兑换率。我有以下代码:
add_action(\'admin_init\', \'currency_options_set\');
add_action( \'admin_menu\', \'admin_menu\' );
function admin_menu () {
add_options_page( \'Currency Options\',\'Currency Options\',\'manage_options\',\'options_currency\', \'settings_page\' );
}
function currency_options_set(){
register_setting( \'currency_options_group\', \'currency_options\' );
}
function settings_page () {
$default_options = array( \'currency_eur\' => "1.1" );
$options = get_option(\'currency_options\', $default_options);
?>
<form method="post" action="options.php">
<?php
settings_fields("currency_options_group"); ?>
<table class="form-table">
<tr>
<th scope="row">EUR:</th>
<td>
<input type="text" name="currency_options_group[currency_eur]" size="40" value="<?php echo stripslashes($options["currency_eur"]); ?>" />
</td>
</tr>
</table>
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e(\'Save Changes\') ?>" />
</p>
</form>
<?php
}
新选项页面显示,我可以看到表单,但当我提交表单时,没有任何选项保存到wp\\U选项表中。我错过了什么?
SO网友:1fixdotio
刚刚测试了您的代码,在输入名称中发现了一个错误。改变currency_options_group
到currency_options
将使其工作。修改后的代码:
add_action(\'admin_init\', \'currency_options_set\');
add_action( \'admin_menu\', \'admin_menu\' );
function admin_menu () {
add_options_page( \'Currency Options\',\'Currency Options\',\'manage_options\',\'options_currency\', \'settings_page\' );
}
function currency_options_set(){
register_setting( \'currency_options_group\', \'currency_options\' );
}
function settings_page () {
$default_options = array( \'currency_eur\' => "1.1" );
$options = get_option(\'currency_options\', $default_options);
?>
<form method="post" action="options.php">
<?php
settings_fields("currency_options_group"); ?>
<table class="form-table">
<tr>
<th scope="row">EUR:</th>
<td>
<input type="text" name="currency_options[currency_eur]" size="40" value="<?php echo stripslashes($options["currency_eur"]); ?>" />
</td>
</tr>
</table>
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e(\'Save Changes\') ?>" />
</p>
</form>
<?php
}
SO网友:fischi
你有点搞砸了<input>
选项页的字段。
在您的情况下name
输入的名称应该是要保存的选项的名称,而不是options_group
, 以及输出应该是option
, 不是一个$array
的options_group
.
选项如下:
$default_options = \'1.1\';
$options = get_option(\'currency_options\', $default_options);
您的正确
<input>
是这样的:
<input type="text" name="currency_options" size="40" value="<?php echo stripslashes($options); ?>" />
Wordpress自动知道currency\\u options是currency\\u options\\u组的一部分(通过
register_setting
), 你不需要在这里使用它。
这个options_group
在中使用Settings API 让您自动生成wp-admin
通过注册设置并使用一些回调来控制输出,设置页面。
一个简单的设置可以以您的方式更轻松、更快地完成。