В разделе администратора WordPress, как я могу ссылаться на страницы подменю, созданные для плагина?


10

Итак, я пытаюсь создать плагин WordPress, и я создал несколько страниц меню, используя эту функцию:

add_submenu_page('my_plugin_menu', 'Edit record page', 'Edit record page', 'manage_options', 'edit_record_page', array(&$this, 'display_edit_record_page');

и когда я перехожу на страницу, я замечаю в адресной строке браузера, она выглядит примерно так:

http://mydomain.com/wp/wp-admin/admin.php?page=edit_record_page

То, что я хочу сделать, - это иметь возможность связать эту страницу, но я нахожу, что должен жестко закодировать ссылку из-за отсутствия лучшего способа сделать это, и я работаю над сайтом разработчика. Поэтому мне было интересно, как я могу динамически сгенерировать ссылку, которую я видел в своем браузере, чтобы при копировании этого кода плагина на рабочий сервер он работал. А именно, есть ли функция WordPress, которая будет генерировать часть ссылки на странице создания подменю.

page=edit_record_page

Кроме того, если я хочу добавить строки запроса к ссылке, это так же просто, как добавить его вручную, вот так:

http://mydomain.com/wp/wp-admin/admin.php?page=edit_record_page&rec_id=1

или есть соответствующая функция WordPress для этого тоже?

Ответы:


16

admin_url()получает правильный URL-адрес страницы администрирования (и network_admin_url()для получения URL-адреса страницы администрирования сети)

При желании вы можете использовать add_query_arg()для добавления аргументов в URL, используя ассоциативный массив:

$page       = 'edit_record_page';
$rec_id     = 1;
$record_url = add_query_arg(compact('page', 'rec_id'), admin_url('admin.php'));

3

<a href="admin.php?page=edit_record_page">Link Text</a>

и

<a href="admin.php?page=edit_record_page&rec_id=1">Link Text</a>


Это работает, однако вы можете показать пример использования admin_url (); встроенный как это?
Бен Расикот
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.