2010-02-10 41 views
8

Có plugin được gọi là Shopp trong trang quản trị WP của tôi, plugin này có trình đơn cấp cao nhất "Shopp".Cách thêm menu con tùy chỉnh mới dưới một menu bổ sung khác

Đây là menu cấp cao nhất:

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

Và tôi đã tạo ra một số plugin mà cần phải thêm bao menu con dưới "SHOPP" menu cấp cao nhất, vì vậy nó sẽ bổ sung trình đơn phụ (liên kết. .... wp-admin/admin.php? page = ach-faq.php) nhưng khi tôi nhấp vào menu con nó sẽ hiển thị "Bạn không có đủ quyền để truy cập trang này".

kết quả gỡ lỗi:

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 = 

Mã của tôi:

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

Làm thế nào tôi có thể sửa lỗi này? Làm ơn giúp tôi !

Trả lời

20

Trang menu và menu phụ nên được gọi cùng một lúc và sử dụng cùng một sên. Ví dụ:

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

Điều này sẽ dẫn đến trình đơn cấp cao "Menu của tôi" có con của "Menu phụ của tôi".

Lỗi quyền không hợp lệ dường như tăng lên khi bạn sử dụng FILE cho menu con-slug.

+0

lý do không có trong tài liệu. Không rõ ràng rằng các trang menu con cần cùng một con sên. –

+0

@TimJoyce Họ không cần cùng một con sên. Các menu con cần slug mẹ. Nếu bạn muốn một menu phụ mặc định, mà tôi không thấy lý do tại sao bạn sẽ không, bạn cần phải sử dụng cùng một sên. Bạn có thể có một hành động nếu bạn nhấp vào cấp cao nhất khác với tất cả các sublevel, nhưng điều đó làm tăng thêm sự nhầm lẫn. Thực hành tiêu chuẩn là để có menu phụ đầu tiên chia sẻ slug và hành động của nó sẽ ghi đè hành động của phụ huynh. –

0

Bạn có thể bằng cách thêm tên thư mục plugin và trang chủ của plugin. Ví dụ tôi nối với các plugin Bản tin theo:

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

Như Altari nói:

Menu và menu con trang nên được gọi cùng lúc

CÙNG LÚC NÀO - add_submenu_page phải được gọi từ cùng chức năng như add_menu_page, hàm trong plugin gốc. Bạn không thể "hack" vào menu bổ sung khác từ bên ngoài.

-6

Chuyển đến Giao diện -> Menu Sau đó tạo Menu trong Liên kết tùy chỉnh, sau đó tạo menu mới được tạo ở bên phải. Bây giờ bạn có thể chỉ cần kéo và đặt theo trình đơn cấp cao nhất mà bạn muốn.

+0

câu hỏi là về menu quản trị chứ không phải là giao diện người dùng. – ggg

1

Bạn có thể thêm menu con vào menu tùy chỉnh (bổ sung bởi plugin khác) hiện có với một chút khéo léo

bạn có thể tạo menu và sau đó loại bỏ menu riêng của mình sau khi bạn thêm menu con với cùng sên và gọi lại.

Vui lòng thử mã này:

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
/*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

Để thêm nó vào một trong các trình đơn phụ huynh của plugin, sử dụng add_submenu_page() và thiết lập các ưu tiên của add_action của bạn() để giảm nghĩa là trên 10.

Sau đó, trong add_submenu_page(), hãy thay thế 'plugin-parent-menu-slug' bằng slug của menu chính nơi bạn muốn thêm. Ví dụ, bạn muốn thêm nó dưới một trang quản trị với một 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"; 
} 
Các vấn đề liên quan