2010-05-12 5 views
8

Я уже разработал свой плагин для WordPress, и я могу управлять им от администратора. Я передал доступ к файлу плагина с помощью add_submenu_page. Проблема в том, что плагин расширяется, и я хочу использовать другой файл, который связан с основным файлом. Например, у меня есть second_page.php?id=3. Когда я пытаюсь получить доступ к этой ссылке, я получаюWordPress добавить новую страницу в раздел администратора

У вас нет достаточных прав для доступа к этой странице.

сообщение. Я хочу «проверить» эту страницу также для использования с этим скриптом, и я не знаю, как это сделать. Идеи?

ответ

3

Поскольку WP изначально поддерживает URL-адреса, такие как wp-admin/admin.php?page=<your_page_handle> вы можете сделать подстраниц что-то вроде:

wp-admin/admin.php?page=yourpage

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

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

Затем в коде, который обрабатывает wp-admin/admin.php?page=<your_page_handle>, вы просто смотрите на $ _GET и подтягиваете основную страницу или подстраницу по мере необходимости.

Я определенно видел плагины, где на странице администратора есть несколько строк ссылок по верхнему, связывающих различные подстраницы.

5

При добавлении страницы с add_submenu_page(), URL-адрес должен быть что-то вроде:

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

Ваша страница действительно загружается из admin.php (обычно). Вы можете добавлять параметры к своим ссылкам, добавляя что-то вроде &id=3, а затем логику загрузки основной плагины определите, какой файл следует включить на основе этого параметра.

Например

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

Edit:

Я нашел трюк, который может быть проще для вас, хотя я тщательно не проверял. Предположим, что у вас есть две страницы: my_one и my_two. Просто позвоните add_submenu_page дважды и установите родительский номер второй страницы как первую страницу. Это заставит Wordpress не добавлять ссылку на панель навигации, но вы все равно можете получить доступ к своей странице, перейдя по ссылке admin.php?page=my_two.

Пример:

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

Ну, я знаю, как включить одну страницу, такую ​​как page.php, как насчет page.php? Id = 3? Это меняет все, и я не знаю, как это сделать. –

+0

Я добавил другой метод, который может сработать для вас. –

+0

5 лет спустя, и этот ответ по-прежнему полезен. Однако @FletcherMoore вы знаете, как я могу сделать это так, чтобы 'my_toplevel_link' по-прежнему оставался выбранным как ** основное ** меню? –