Как добавить новое пользовательское подменю в другое меню плагинов - PullRequest
9 голосов
/ 11 февраля 2010

На моей странице администратора 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 ]

20 голосов
/ 17 мая 2010

Страницы меню и подменю должны вызываться одновременно и использовать одинаковые слагы. Например

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 для подменю-слаг.

1 голос
/ 06 августа 2016

Вы можете добавить подменю в существующее пользовательское меню (добавленное другим плагином) с небольшим хитростью

Вы можете создать меню, а затем удалить само меню после добавления подменю с таким же слагом и обратным вызовом.

Пожалуйста, попробуйте этот код:

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";
}
0 голосов
/ 15 декабря 2017

Чтобы добавить его в одно из родительских меню плагина, используйте add_submenu_page () и установите приоритет вашей add_action (), чтобы снизить значение ie, то есть выше 10.

Затем в add_submenu_page () замените 'plugin-parent-menu-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";
}
0 голосов
/ 29 июня 2017
/*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' );
?>
0 голосов
/ 19 марта 2013

Перейти к оформлению -> Меню Затем создайте меню под Custom Links, затем создайте новое меню в правой части. Теперь вы можете просто перетащить это и поместить в меню верхнего уровня, которое вы хотите.

0 голосов
/ 16 февраля 2013

Как Алтари указано:

Страницы меню и подменю должны вызываться одновременно

ЖЕ ВРЕМЯ - add_submenu_page должен вызываться из той же функции, что и add_menu_page, функция в оригинальном плагине. Вы не можете"взломать" другое меню плагинов извне.

0 голосов
/ 29 сентября 2011

Вы можете добавить имя папки плагина и домашнюю страницу плагина. Например, я подключился к плагину 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' );
}
?> 
...