向自定义页面(Add_SubMenu_Page)添加部分(Add_Setting_Section)

时间:2011-08-22 作者:thom

我创建了一个插件页面add_submenu_page, 我想在那里添加一个新部分,但什么都没有发生:

add_submenu_page(\'parent\', \'Foo\', \'Foo\', \'manage_options\', \'foo-settings\', \'anothercallback\');
add_settings_section(\'foo-settings-section\', \'Settings\', \'acallback\', \'foo-settings\');
在自定义页面中使用它的正确调用是什么?你有完整的例子吗?

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

这个add_settings_section() 函数只需使用WordPress用特定的slug注册一个表单节。为了使节和添加到其中的所有字段显示在某个菜单页上,您需要包括do_settings_sections($sections-slug) 方法。当然,这是假设您使用的是设置APIadd_settings_section 是的一部分。

示例:

function plugin_admin_init() {
     //All callbacks must be valid names of functions, even if provided functions are blank
     register_setting( \'option_group\', \'option_name\', \'sanitize_callback\' );
     add_settings_section( \'section_id\', \'section_title\', \'section_callback\', \'section_page_type\' );
     add_settings_field( \'field_id\', \'field_title\', \'field_callback\', \'section_page_type\', \'section_id\' );
}
add_action( \'admin_init\', \'plugin_admin_init\' );

function add_menus() {
     add_menu_page( \'menu_page_title\', \'menu_title\', \'menu_capability\', \'menu_slug\', \'menu_callback\');
     add_submenu_page( \'menu_slug\', \'submenu_page_title\', \'submenu_title\', \'submenu_capability\', \'submenu_slug\', \'submenu_callback\' );
}
add_action( \'admin_menu\', \'add_menus\' );

function submenu_callback() {
     ?>
     <div class=\'wrap\'>
          <h2>Settings</h2>
          <form method=\'post\' action=\'options.php\'>
          <?php 
               /* \'option_group\' must match \'option_group\' from register_setting call */
               settings_fields( \'option_group\' );
               do_settings_sections( \'section_page_type\' );
          ?>
               <p class=\'submit\'>
                    <input name=\'submit\' type=\'submit\' id=\'submit\' class=\'button-primary\' value=\'<?php _e("Save Changes") ?>\' />
               </p>
          </form>
     </div>
     <?php
}
我尽了最大努力保持所有参数名称的唯一性,因此您应该能够将它们区分开来并跟踪它们的去向。设置API非常具体地说明了需要去哪里,所以请确保您已经准备好了。另外,请记住,我在这个示例中省略了所有回调函数,但实际上它们是必需的。

SO网友:Chip Bennett

这是你的问题add_submenu_page() 回调:

settings_fields( \'option_group\' );
do_settings_section( \'section_page_type\' );
用于settings_fields():

您需要使用$optiongroup 传递给的参数register_setting().do_settings_sections():

功能是do_settings_sections(), not do_settings_section() (注意复数)

  • 您需要通过$pageid 传递给的参数add_submenu_page().
    • 编辑,别客气。我是在回应其他人的回答,我将其误读为实际的回调函数标记。这里的答案可能适用,也可能不适用;我们仍然需要查看完整的代码,包括回调。

    结束

    相关推荐

    带参数的admin_init挂接的Add_action

    在我的主题中,我想创建一种通用方法,将元框插入到帖子、页面、公文包或其他自定义项目中。目前,此操作类似于:add_action(\'admin_init\', \'add_portfolio_settings\'); 这很好,但有一个问题。它目前仅适用于为公文包项目创建add\\u meta\\u框。但是,如果我想在帖子或页面中添加相同的内容,该怎么办?因此,我想让add\\u操作将一个参数传递给我的add\\u portfolio\\u settings函数,理想情况下是一个数组,用于指定新元