WordPress добавляет новую страницу к администраторскому разделу

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

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

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

8
задан Marc 8 January 2016 в 18:45
поделиться

2 ответа

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

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 = , вы просто смотрите на $ _GET и вытаскиваете главную страницу или подстраницу по мере необходимости.

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

3
ответ дан 5 December 2019 в 20:14
поделиться

Когда вы добавляете страницу с помощью add_submenu_page () , URL-адрес должен быть примерно таким:

wp-admin / admin. php? page =

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

Например

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

Редактировать:

Я нашел уловку, которая может быть проще для вас, хотя я еще не тестировал ее полностью. Допустим, у вас есть две страницы: 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'
    );
5
ответ дан 5 December 2019 в 20:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: