WordPress | 在后台自定义菜单下添加自定义文章菜单

3

我正在尝试创建一个插件,包括一个仪表板页面、配置页面、一些额外的配置页面和一些自定义文章类型。

更具体地说,在管理界面中,我想通过函数add_menu_pageadd_submenu_page添加一些页面到菜单中,同时我还想创建一些与插件相关的自定义文章类型。

问题是,如何将自定义文章类型菜单分组放置在插件菜单选项下。

例如,假设我使用函数add_menu_page创建菜单选项"MyPlugin",然后在该菜单下通过函数add_submenu_page添加"设置页面"、"操作页面"、"仪表板"等页面,接着我创建了自定义文章类型"Cars"。如何将"Cars"菜单放置在"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 ?

实际问题不在于如何创建菜单结构,而在于如何将“Cars”自定义文章类型菜单添加到MyPlugin菜单下。

请注意,我已经尝试在“register_post_type”属性中使用以下选项,但没有成功。

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

“是否可以实现这一点?”
2个回答

5
我遇到了同样的问题,并尝试了以下解决方案:
针对您的插件菜单页,请尝试以下操作:
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

这会在您选择的位置显示菜单页面,并将自定义文章类型作为子菜单。

4
在你的`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文章类型生成器(网站已删除),您可以在右侧看到自定义文章类型的位置, 输入文章类型名称(复数形式) 然后,在此下方,您可以选择菜单位置,它将更改位置以显示其出现位置,

如果您在构建菜单结构时遇到问题,请尝试此方法

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


3
从菜单编解码页面上看:请不要使用__FILE__作为$menu_slug,它会使URL很丑,并且存在一些安全细微差别。 - emc
1
这不允许自定义文章类型作为子菜单项... 有没有办法做到这一点? - Jake
1
@Jake add_submenu_page( 'edit.php?post_type=CUSTOM_POST_TYPE', '子菜单页面标题', '菜单标签', '权限', '子菜单别名', '回调函数' ); - SgtPooki
@SgtPooki 是的,但是如何回调以显示特定自定义文章类型编辑页面的默认页面? - chuuke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接