我正在学习插件开发,我一直在保存插件选项表单数据。
我有一个插件选项页面,其中有三个字段要求编码视频数量、高度和宽度。
当我在其中输入值并点击save时,它只保存一个值,即视频数。
这是我的密码
<?php
add_action(\'admin_init\', \'ozh_sampleoptions_init\' );
add_action(\'admin_menu\', \'ozh_sampleoptions_add_page\');
// Init plugin options to white list our options
function ozh_sampleoptions_init(){
register_setting( \'ozh_sampleoptions_options\', \'ozh_sample\', \'ozh_sampleoptions_validate\' );
}
// Add menu page
function ozh_sampleoptions_add_page() {
add_options_page(\'Youtube Video Settings\', \'Youtube Video Settings\', \'manage_options\', \'ozh_sampleoptions\', \'ozh_sampleoptions_do_page\');
}
// Draw the menu page itself
function ozh_sampleoptions_do_page() {
?>
<div class="wrap">
<h2>Youtube Video Setting Options</h2>
<form method="post" action="options.php">
<?php settings_fields(\'ozh_sampleoptions_options\'); ?>
<?php $options = get_option(\'ozh_sample\'); ?>
<table class="form-table">
<tr valign="top"><th scope="row">No of videos:</th>
<td><input type="text" name="ozh_sample[sometext]" value="<?php echo $options[\'sometext\']; ?>" /></td>
</tr>
<tr valign="top"><th scope="row">Height:</th>
<td><input type="text" name="ozh_sample[hgt]" value="<?php echo $options[\'hgt\']; ?>" /></td>
</tr>
<tr valign="top"><th scope="row">Width:</th>
<td><input type="text" name="ozh_sample[wid]" value="<?php echo $options[\'wid\']; ?>" /></td>
</tr>
</table>
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e(\'Save Changes\') ?>" />
</p>
</form>
</div>
<?php
}
// Sanitize and validate input. Accepts an array, return a sanitized array.
function ozh_sampleoptions_validate($input) {
// Our first value is either 0 or 1
//$input[\'option1\'] = ( $input[\'option1\'] == 1 ? 1 : 0 );
// Say our second option must be safe text with no HTML tags
$input[\'sometext\'] = wp_filter_nohtml_kses($input[\'sometext\']);
$input[\'hgt\'] = wp_filter_nohtml_kses($input[\'hgt\']);
$input[\'wid\'] = wp_filter_nohtml_kses($input[\'wid\']);
return $input;
}
$myoptions = get_option( \'ozh_sampleoptions_options\' );
echo \'Niraj\';
echo $options[\'sometext\'];
?>
它不能节省高度和宽度。
我知道我必须努力<input type=\'hidden\' name=\'page_options\' value=\'vidNO\'/>
代码,但没有得到它,
有人能帮我吗???
最合适的回答,由SO网友:Chip Bennett 整理而成
首先,您确实应该将选项存储为wp_options
. 但如果你选择不这样做,你真的应该改变你的第二个和第三个选择的名称;“高度”和“宽度”太笼统了,几乎肯定会引起冲突。你通过了name="height"
和name="width"
, 但我怀疑WordPress是否将“宽度”和“高度”关联为属于插件的选项。
因此,假设您的存储选项为plugin_plugin-slug_options
, 这是一个数组:
<?php
$plugin_options = get_option( \'plugin_plugin-slug_options\' );
?>
<tr><td>Number Of Videos:</td><td><input type="text" name="$plugin_options[vidNO]" value="<?php echo get_option(\'vidNO\');?>" <?php echo get_option(\'vidNO\'); ?> />
</td></tr>
<tr><td>Height:</td><td><input type="text" name="$plugin_options[height]" value="<?php echo get_option(\'height\');?>" <?php echo get_option(\'height\'); ?> />
</td></tr>
<tr><td>Width:</td><td><input type="text" name="$plugin_options[width]" value="<?php echo get_option(\'width\');?>" <?php echo get_option(\'width\'); ?> />
</td></tr>
但您确实应该考虑使用设置API,至少在使用
register_setting()
注册选项数组,以及
settings_fields()
在你的设置表中进行举重。
SO网友:Chris_O
WordPress将为您完成这项工作。
包含带有1个字段的表单的选项页的快速示例。
add_action(\'admin_menu\', \'c3m_myplugin_add_page\');
function c3m_myplugin_add_page() {
add_options_page( \'C3M Google Analytics\', \'C3M Google Analytics\', \'manage_options\', \'c3m_myplugin\', \'c3m_myplugin_option_page\' );
}
// Draw the option page
function c3m_myplugin_option_page() {
?>
<div class="wrap">
<h2>Really Simple Google Analytics</h2>
<form action="options.php" method="post">
<?php settings_fields( \'c3m_myplugin_options\' ); ?>
<?php do_settings_sections( \'c3m_myplugin\' ); ?>
<input name="Submit" type="submit" value="Save Changes" />
</form>
</div>
<?php
}
// Register and define the settings
add_action( \'admin_init\', \'c3m_myplugin_admin_init\' );
function c3m_myplugin_admin_init(){
register_setting(
\'c3m_myplugin_options\',
\'c3m_myplugin_options\'
);
add_settings_section(
\'c3m_myplugin_main\',
\'Google Analytics Web Property ID\',
\'c3m_myplugin_section_text\',
\'c3m_myplugin\'
);
add_settings_field(
\'c3m_myplugin_text_string\',
\'Enter text here\',
\'c3m_myplugin_setting_input\',
\'c3m_myplugin\',
\'c3m_myplugin_main\'
);
}
// Draw the section header
function c3m_myplugin_section_text() {
echo \'<p>Enter your Google Analytics Web Property ID here ex: UA-XXXXXX-XX.</p>\';
}