我正在尝试创建一个插件,包含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'
这是否可以实现?
答案 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');