如何在另一个插件菜单下添加新的自定义子菜单

时间:2010-02-10 21:24:32

标签: wordpress submenu

在我的WP管理页面中有一个名为Shopp的插件,这个插件有顶级菜单“Shopp”。

这是顶级菜单:

$menus['main'] = add_menu_page('Shopp', 'Shopp', SHOPP_USERLEVEL, 'shopp-orders', array(&$this,'orders'));

我已经创建了一些插件,需要在“Shopp”顶级菜单下添加为子菜单,所以它正在添加子菜单(链接..... wp-admin / admin.php?page = ach-faq .php)但是当我点击子菜单时,它显示“你没有足够的权限来访问这个页面。”

调试结果:

Pagenow = admin.php
Parent = shopp-orders
Hookname = shopp_page_ach-faq
Menu = Array
Submenu = Array
Menu nopriv = Array
Submenu nopriv =
Plugin page = ach-faq.php
Registered pages =

我的代码:

function ach_faq_menu(){
 add_submenu_page('shopp-orders', 'My FAQ Plugin', 'My FAQ Plugin', 8, __FILE__, 'section_1');
}
function section_1(){
 echo 'Text';
}
add_action('admin_menu', 'ach_faq_menu');

我该如何解决这个问题?请帮帮我!

7 个答案:

答案 0 :(得分:20)

应同时调用菜单和子菜单页面,并使用相同的slug。例如

add_action("admin_menu", "createMyMenus");

function createMyMenus() {
    add_menu_page("My Menu", "My Menu", 0, "my-menu-slug", "myMenuPageFunction");
    add_submenu_page("my-menu-slug", "My Submenu", "My Submenu", 0, "my-submenu-slug", "mySubmenuPageFunction");
}

这会产生一个顶级菜单“我的菜单”,其子项为“我的子菜单”。

使用 FILE 作为submenu-slug时,似乎会出现无效权限错误。

答案 1 :(得分:1)

您可以将子菜单添加到现有的自定义菜单(由其他插件添加),但有点棘手

您可以创建菜单,然后在添加具有相同slug和回调的子菜单后删除菜单。

请尝试以下代码:

add_action( 'admin_menu', 'add_shopp_submenu' );
function add_shopp_submenu(){
    add_menu_page( __('New Menu', 'your-plugin-text-domain'), __('New Menu', 'your-plugin-text-domain'), 'read', 'ach-faq', 'your_menu_callback');
    add_submenu_page( 'shopp-orders', __('New Menu', 'your-plugin-text-domain'), __('New Menu', 'your-plugin-text-domain'), 'read', 'ach-faq', 'your_menu_callback' );
    remove_menu_page('ach-faq');
}

function your_menu_callback(){
    echo "string";
}

答案 2 :(得分:0)

您可以添加插件文件夹名称和插件的主页。 例如,我通过以下方式连接到Newsletter插件:

<?php 

add_action('admin_menu', 'add_newsletter_extra_page');

function add_newsletter_extra_page(){
    add_submenu_page( 
        'newsletter/intro.php', 
        'Newsletter', 
        'Subscribers Plus', 
        1, //$capability, 
        'subscribers-plus',
        'newsletter_list_addon' );
}
?> 

答案 3 :(得分:0)

正如Altari所述:

  

应同时调用菜单和子菜单页

相同时间 - 必须从与原始插件中的函数add_menu_page相同的函数调用add_submenu_page。您无法“黑客入侵”其他插件菜单。

答案 4 :(得分:0)

/*create any function name*/
function process_post() {

 add_menu_page(__('nLr','menu-test'), __('My Plugin','menu-test'), 'manage_options','myplugin', 'myplguin_admin_page', 'dashicons-tickets', 6 );

add_submenu_page('myplugin', __('My Plugin Edit', 'menu-test'), __('My Plugin Edit', 'menu-test'), 'manage_options', 'myplugin_edit', 'myplugin_edit');

 }
/*create callback function for main menu*/

function myplguin_admin_page(){
    echo"welcom to my plugin menu";

}

/* create callback function for submenu */

function myplugin_edit(){
    echo"welcome to submenu";
}
add_action( 'admin_init', 'process_post' );
?>

答案 5 :(得分:0)

要在其中一个插件的父菜单中添加它,请使用add_submenu_page()并将add_action()的优先级设置为更低,即大于10。

然后在add_submenu_page()中,替换&#39; plugin-parent-menu-slug&#39;使用您希望它添加的父菜单的slug。例如,您想在管理页面下添加slug /wp-admin/admin.php?page=plugin-parent-menu-slug

// set priority to lower i.e. greater than 10
add_action( 'admin_menu', 'my_admin_menu', 20 );

function my_admin_menu() {
    add_submenu_page( 'plugin-parent-menu-slug', 'New Menu', 'New Menu', 'manage_options', 'my-admin-slug', 'my_admin_page' );
}

function my_admin_page(){
    echo "My Admin Page";
}

答案 6 :(得分:-6)

转到外观 - &gt;菜单 然后在自定义链接下创建菜单,然后在右侧创建一个新菜单。现在你可以拖动它并放在你想要的顶级菜单下。