WordPress |在管理员的自定义菜单下添加自定义帖子菜单

时间:2013-03-25 09:41:01

标签: wordpress wordpress-plugin custom-post-type

我正在尝试创建一个插件,包含Dashboard页面,配置页面,一些用于配置的额外页面以及一些自定义帖子类型。

更具体地说,在管理员中我希望通过功能 add_menu_page add_submenu_page 在菜单中添加一些页面,我也想创建一些自定义帖子类型与插件有关。

问题是,如何在插件菜单选项下对自定义帖子类型菜单进行分组。

例如,假设我使用 add_menu_page 功能创建菜单选项“MyPlugin”,然后在此菜单下方添加“设置页面”,“填充页面”,“仪表板”页面通过函数 add_submenu_page ,然后我创建自定义帖子类型“汽车”。如何将“汽车”菜单放在MyPlugin菜单选项下?

我最喜欢的结果是:

Dashboard
    Home
    ...
Posts
    All Posts
    ...
Settings
    General
    ...
    ...
MyPlugin             <- How to add this menu structure ?
    Dashboard        <- How to add this menu structure ?
    Cars             <- How to add this menu structure ?
    Settings Page    <- How to add this menu structure ?
    Do stuff page    <- How to add this menu structure ?

实际问题不是如何创建菜单结构,而是如何在MyPlugin菜单下添加“Cars”自定义帖子类型菜单。

注意我在“register_post_type”属性中尝试了以下选项但没有运气

'show_in_menu'          =>  'admin.php?page=myplugin.php'

这是否可以实现?

2 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,我证明了这个解决方案:

为您的插件菜单页试试这个:

function my_plugin_menu(){
   add_menu_page( 
       'My Plugin', 
       'My Plugin', 
       'capabilities', 
       'my_plugin_index', 
       'my_plugin_function', 
       plugins_url( 'images/my_plugin_icon.png', __FILE__ ), 
       menu_position 
    );
// add some submenu pages
   ...
   ...
}

register_post_type函数中:

'show_in_menu' => 'my_plugin_index' // slug from your plugin menu page

这会在您选择的位置显示您的菜单页面,并在子菜单中显示自定义帖子类型。

答案 1 :(得分:3)

register_post_type中,添加此小片段

"menu_position" => 100,// below second seperator

这是菜单位置的位置

 2 Dashboard
 4 Separator
 5 Posts
 10 Media
 15 Links
 20 Pages
 25 Comments
 59 Separator
 60 Appearance
 65 Plugins
 70 Users
 75 Tools
 80 Settings
 99 Separator

如果您将位置设置为大于100,它将继续将它们添加到管理菜单的最底部。

我创建了一个自定义的wp post类型生成器(SITE GONE),你可以看到右侧自定义帖子类型的位置, 输入帖子类型名称,(复数) 然后在此下你可以选择菜单位置,它会改变位置以显示它出现的位置,

如果您在构建菜单结构时遇到问题,请尝试使用

function myplugin_menu() {
    add_menu_page('MyPlugin', 'MyPlugin', 'add_users', __FILE__, 'myplugin-page-name', plugins_url('MyPluginFolder/images/icon.png') );
    add_submenu_page(__FILE__, 'Cars', 'Cars', 8, 'myplugin-cars-page', 'cars');
    add_submenu_page(__FILE__, 'Settings', 'Settings', 8, 'myplugin-settings-page', 'myplugin_settings_function');
    add_submenu_page(__FILE__, 'Do Stuff', 'Do Stuff', 8, 'myplugin-dostuff-page', 'myplugin_dostuff_function');
}
add_action('admin_menu', 'myplugin_menu');

http://codex.wordpress.org/Function_Reference/add_menu_page