2010-05-12 2 views
8

Tôi đã phát triển plugin của mình cho WordPress và tôi có thể quản lý nó từ quản trị viên. Tôi đã chuyển quyền truy cập vào tệp plugin bằng cách sử dụng add_submenu_page. Vấn đề là plugin đang mở rộng và tôi muốn sử dụng một tệp khác được liên kết từ tệp chính. Ví dụ: tôi có second_page.php?id=3. Khi tôi cố gắng truy cập liên kết này, tôi nhận được mộtWordPress thêm trang mới vào phần quản trị

Bạn không có đủ quyền để truy cập trang này.

thư. Tôi muốn "xác nhận" trang này cũng để sử dụng với tập lệnh này và tôi không biết làm thế nào. Ý tưởng?

Trả lời

3

Kể từ WP natively hỗ trợ URL như wp-admin/admin.php?page=<your_page_handle> bạn có thể làm trang phụ với một cái gì đó như:

wp-admin/admin.php?page=yourpage

wp-admin/admin.php?page=yourpage&sub=2

wp-admin/admin.php?page=yourpage&sub=3

Sau đó, trong mã xử lý wp-admin/admin.php?page=<your_page_handle> bạn chỉ cần nhìn vào $ _GET và kéo lên trang chính hoặc trang phụ nếu cần.

Tôi chắc chắn đã nhìn thấy các plugin nơi trang quản trị có một hàng nhỏ các liên kết trên đầu liên kết các trang phụ khác nhau.

5

Khi bạn thêm một trang với add_submenu_page(), url nên một cái gì đó như:

wp-admin/admin.php?page=<your_page_handle>

Trang của bạn đã thực sự nạp từ admin.php (thường). Bạn có thể thêm tham số vào liên kết của mình bằng cách thêm một số thứ như &id=3 và sau đó có logic tải trang plugin chính của bạn xác định tệp sẽ bao gồm dựa trên tham số.

Ví dụ

if (isset($_GET['id']) && ((int) $_GET['id']) == 3) { 
    include 'second_page.php'; 
} else { 
    include 'first_page.php'; 
} 

Edit:

tôi tìm thấy một thủ thuật mà bạn có thể dễ dàng hơn cho bạn, mặc dù tôi đã không kiểm tra kỹ lưỡng nó. Giả sử bạn có hai trang: my_onemy_two. Chỉ cần gọi add_submenu_page hai lần và đặt bố mẹ của trang thứ hai làm trang đầu tiên. Điều này sẽ khiến Wordpress không thêm liên kết vào thanh điều hướng, nhưng bạn vẫn có thể truy cập trang của mình bằng cách điều hướng đến admin.php?page=my_two.

Ví dụ:

add_submenu_page( 
      'my_toplevel_link' 
     , 'Page Title' 
     , 'Link Name' 
     , 'administrator' 
     , 'my_one' // here's the page handle for page one 
     , 'my_one_callback' 
    ); 
    add_submenu_page( 
      'my_one' // set the parent to your first page and it wont appear 
     , 'Page Title' 
     , 'Link Name' // unused 
     , 'administrator' 
     , 'my_two' 
     , 'my_two_callback' 
    ); 
+0

Vâng, tôi biết cách bao gồm một trang như page.php, page.php như thế nào? Id = 3? Điều này thay đổi tất cả mọi thứ và tôi không biết làm thế nào để làm điều đó. –

+0

Tôi đã thêm một phương pháp khác có thể hoạt động cho bạn. –

+0

5 năm sau và câu trả lời này vẫn hữu ích. Tuy nhiên @FletcherMoore bạn có biết làm thế nào tôi có thể làm cho nó để 'my_toplevel_link' vẫn còn được chọn là ** chính ** menu? –