source

다른 플러그인 메뉴에 새 사용자 지정 하위 메뉴를 추가하는 방법

goodcode 2023. 3. 27. 23:25
반응형

다른 플러그인 메뉴에 새 사용자 지정 하위 메뉴를 추가하는 방법

내 WP 관리 페이지에는 Shopp이라는 플러그인이 있으며, 이 플러그인은 최상위 메뉴인 "Shopp"이 있습니다.

다음은 최상위 메뉴입니다.

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

또한 "Shopp" 최상위 메뉴 아래에 하위 메뉴로 추가해야 하는 플러그인을 만들었습니다.이 플러그인은 서브 메뉴(link .....wp-admin/admin.admin?page=ach-admin.admin.)를 추가하고 있지만 서브메뉴를 클릭하면 "You have not permission to access this page."라고 표시됩니다.

디버깅 결과:

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');

어떻게 하면 고칠 수 있을까요? 도와주세요!

메뉴와 서브메뉴 페이지를 동시에 호출하고 동일한 슬래그를 사용해야 합니다.예를들면

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");
}

그러면 "My Submenu"의 하위 항목이 포함된 최상위 메뉴 "My Menu"가 생성됩니다.

하위 메뉴 슬래그에 FILE을 사용하면 잘못된 권한 오류가 나타나는 것 같습니다.

플러그인의 부모 메뉴 중 하나에 추가하려면 add_submenu_page()를 사용하여 add_action()의 우선순위를 10보다 낮게 설정합니다.

그런 다음 add_submenu_page()에서 'plugin-parent-menu-slug'을 추가할 부모 메뉴의 slug로 바꿉니다.예를 들어 slug /wp-admin/admin.menu?page=pagent-parent-menu-menu-menu-menu-menu-manu-manu-manu-mar

// 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";
}

기존의 커스텀 메뉴에 서브메뉴를 추가할 수 있습니다(다른 플러그인에서 추가).

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";
}

Altari가 말한 대로:

메뉴와 서브메뉴 페이지를 동시에 호출해야 합니다.

SAME TIME - add_submenu_page는 원래 플러그인의 함수인 add_menu_page와 동일한 함수에서 호출해야 합니다.외부에서는 다른 플러그인 메뉴에 "해킹"할 수 없습니다.

플러그인 폴더 이름과 플러그인의 홈 페이지를 추가하면 됩니다.예를 들어 다음과 같이 뉴스레터 플러그인에 연결했습니다.

<?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' );
}
?> 
/*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' );
?>

[ Custom Links ]의 [Accessance ]- [ Menus ]- [ Create Menu ](메뉴 작성)으로 이동하여 우측에 새 메뉴를 만듭니다.이제 끌어서 원하는 최상위 메뉴를 넣을 수 있습니다.

언급URL : https://stackoverflow.com/questions/2240460/how-to-add-new-custom-submenu-under-another-plugins-menu

반응형