我肯定这是件愚蠢的事。但我找不到它,用这么简单的代码,我什么都找不到。在查看了许多其他插件以各种方式进行设置后,我们真的看不出它与那些执行类似代码的插件有什么不同。这实际上是从WordPress Codex. 在我的代码不起作用后,我去检查了抄本并尝试了一下。真正奇怪的是,WordPress偶尔会保存所选内容。但大多数情况下,情况并非如此。
我可以绕过WordPress方法,直接使用PHP,但我什么也学不到。许多插件绕过register\\u settings方法来处理POST和DB。
再次作为上一次插件安装。一如既往,非常感谢您的帮助。
<?php
/*
Plugin Name: myplug
Version: 0.1
Plugin URI: http://myplug.org
Author: ME
Description: Stupid plugin
*/
add_action(\'admin_init\', \'myplug_register_options\'); // register options for the form
add_action(\'admin_menu\', \'myplug_admin_links\'); // register admin menu hyperlinks
/** Function to register form fields **/
function myplug_register_options(){
register_setting(\'myplug_options_group\', \'myplug_settings\', \'myplug_validate\');
}
/** Function to add hyperlinks to the admin menus using hooks and filters. **/
function myplug_admin_links() {
add_options_page(\'myplug Setup\', \'myplug\', \'manage_options\', \'myplug\', \'myplug_admin_page\' ); // add link to settings page
add_filter( \'plugin_action_links\', \'myplug_settings_link\', 10, 2 ); // add link to plugin page
}
/** Function to create link for plugin_action_links filter **/
function myplug_settings_link($links, $file){
if ( $file == plugin_basename( dirname(__FILE__). \'/myplug.php\')){
$settings_link = \'<a href="options-general.php?page=myplug">\' .__(\'Settings\') . \'</a>\';
array_unshift( $links, $settings_link ); // place before other links
}
return $links;
}
/** Validate User Input **/
function myplug_validate($input) {
$input[\'select_it\'] = wp_filter_nohtml_kses($input[\'select_it\']);
return($input);
}
/** Draw the Settings Page **/
function myplug_admin_page(){
?>
<div>
<h2>Options</h2>
<form method="post" action="options.php">
<?php settings_fields(\'myplug_options_group\'); ?>
<?php $myplug_options = get_option(\'myplug_settings\'); ?>
<select name="input[select_it]">
<option value="1" <?php selected( $input[\'select_it\'], 1 ); ?>>1</option>
<option value="2" <?php selected( $input[\'select_it\'], 2 ); ?>>2</option>
<option value="3" <?php selected( $input[\'select_it\'], 3 ); ?>>3</option>
</select>
<?php submit_button(); ?>
</form>
</div>
<?php
}
?>
最合适的回答,由SO网友:gmazzap 整理而成
请参见myplug_admin_page
作用
并查看selected
在里面打电话。selected
其工作方式是使用当前保存的值检查项目的值。
在您的selected
调用当前保存的值$input[\'select_it\']
但是no $input
变量在该函数中定义。
在该函数中,当前保存的值位于var中$myplug_options
(因为$myplug_options = get_option(\'myplug_settings\')
).
所以在selected
调用替换$input
具有$myplug_options
我敢打赌它会奏效的。