다른 플러그인 메뉴에 새 사용자 지정 하위 메뉴를 추가하는 방법
내 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
'source' 카테고리의 다른 글
| Python: os.system을 실행한 후 stdout을 실행하는 방법은 무엇입니까? (0) | 2023.08.24 |
|---|---|
| 포스트맨 레스트 클라이언트에서 스프링 csrf 토큰을 보내려면 어떻게 해야 합니까? (0) | 2023.08.24 |
| ng 클릭 시 확인 대화 상자 - 각도JS (0) | 2023.03.27 |
| 대규모 비즈니스 애플리케이션을 위한 대응 아키텍처 (0) | 2023.03.27 |
| jQuery AJAX 및 JSON 형식 (0) | 2023.03.27 |