创建带有插件下拉菜单的设置页面

时间:2011-08-17 作者:Jack

我正在设置插件的设置页面,我可以在页面上获得我想要的字段,但我希望它们是下拉列表而不是文本框。。。除了使用add\\u settings\\u字段之外,我在web上没有找到任何关于如何执行此操作的有用信息。使用add\\u settings\\u字段,我可以显示设置的下拉列表,但我无法将其显示在插件设置页面上,例如,我可以将其显示在“阅读设置页面”上。

基本上我用过

add\\u options\\u page()使我的插件选项页面显示在wordpress后端的设置菜单下,addaction()用于注册我的设置,表单是使用add\\u options\\u page中的回调函数构建的。这一切都很有效,除了文本框我什么都找不到。。。我想要下拉列表,可能还有复选框。

我希望这是有意义的。

谢谢

1 个回复
SO网友:Chiubaka

听起来您的一些设置API调用有误。您的下拉输入是在add\\u settings\\u field()的回调中创建的。需要告知每个设置字段它是哪个设置部分的一部分,然后您的选项页面通过do\\u settings()函数告知它需要显示哪些设置部分。下面是一个使用复选框的简短代码示例(省略了一些回调函数,但所有回调函数都必须是有效函数,即使将其设为空函数):

function plugin_admin_init()
{
     //Register your plugin\'s options with the Settings API, this will be important when you write your options page callback, sanitizing callback omitted
     register_setting( \'plugin_options_group\', \'plugin_options_name\', \'sanitizing_callback\' );
     //Add a new settings section, section callback omitted
     add_settings_section( \'section_id\', \'Plugin Settings\', \'section_callback\', \'section_options_page_type\' );
     //Add a new settings field
     add_settings_field( \'plugin_checkbox\', \'Send automated emails?\', \'field_callback\', \'section_options_page_type\', \'section_id\' );
}
add_action(\'admin_init\', \'plugin_admin_init\');

function field_callback()
{
     //The key thing that makes it a checkbox or textbox is the input type attribute. The thing that links it to my plugin option is the name I pass it.
     echo "<input id=\'plugin_checkbox\' name=\'plugin_options_name[plugin_checkbox]\' type=\'checkbox\' value=\'true\' />"
}

function setup_menu()
{
     add_menu_page(\'Page Name\', \'Page Name\', \'user_capability_level\', \'page_slug\', \'page_callback\');
}
add_action(\'admin_menu\', \'setup_menu\');

function page_callback()
{
?>
<div class=\'wrap\'>
     <h2>Page Name</h2>
     <form method=\'post\' action=\'options.php\'>
     <?php
     //Must be same name as the name you registered with register_setting()
     settings_fields(\'plugin_options_group\');
     //Must match the type of the section you want to display
     do_settings_section(\'section_options_page_type\');
     ?>
          <p class=\'submit\'>
               <input name=\'submit\' type=\'submit\' id=\'submit\' class=\'button-primary\' value=\'<?php _e("Save Changes") ?>\' />
          </p>
     </form>
</div>
<?php
}
?>

结束

相关推荐

我应该在主题中的哪里更新_Options?

我正在设计一个主题,其中主页(即。is_home()) 应该只显示最新的博客文章。我想做点什么$wp_query->update_option(\'posts_per_page\', 1) 每次我在主页上。所有其他显示帖子(如归档)的页面都应该遵循用户定义的选项。每次都这么做似乎有点不必要,因为选项应该只设置一次,对吗?是否可以在循环中忽略posts_per_page 和力have_posts() 只设一个职位?一般来说,这种“一次性设置”的东西应该去哪里?我真的不认为它应该是一个插件,因为它是特定