Вопрос или проблема
Я создаю плагин для добавления опции добавить меню в админку WordPress и использую для этого функцию ниже:
<?php add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position ); ?>
Но я хотел бы добавить абсолютный путь для опции меню вместо $menu_slug
.
Пожалуйста, посмотрите на скриншот, я создал как “Заголовок”, так и “Подвал”, используя функцию add_menu_page. Я хотел бы дать абсолютный путь как для заголовка, так и для подвала. Я знаю, что для этого доступны плагины, но я создаю свой плагин с другой функциональностью.
Я не думаю, что есть чистый способ вставить произвольную ссылку в элемент меню. В лучшем случае вы можете изменить ее с помощью JavaScript после того, как это произойдет.
Тем не менее, есть крайний случай, который позволяет загрузить файл плагина там.
- Передайте в качестве аргумента
$menu_slug
путь к файлу плагина относительно директории плагинов, напримерplugin-folder/boo.php
. - Опустите аргумент
$function
. - Это сгенерирует ссылку вроде
admin.php?page=plugin-folder/boo.php
. - Переход по ссылке загрузит файл как содержимое админ-страницы.
На самом деле нет особой пользы по сравнению с использованием обратного вызова для вывода. Но с технической точки зрения это настолько близко, насколько возможно, к включению файла туда.
Ответ или решение
Короткий ответ на ваш вопрос: да, есть способ сделать так, чтобы add_menu_page
использовал относительный путь к файлу плагина в качестве $menu_slug
, но это не совсем соответствует вашим ожиданиям относительно абсолютного пути. Давайте рассмотрим это более подробно.
Основы использования add_menu_page
Функция add_menu_page
предназначена для добавления нового элемента меню в административной панели WordPress. Ее базовая структура выглядит следующим образом:
<?php add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position ); ?>
$page_title
: Заголовок страницы.$menu_title
: Заголовок меню.$capability
: Права доступа для пользователя.$menu_slug
: Уникальный идентификатор меню.$function
: Функция, которая будет вызвана для отображения содержимого страницы.$icon_url
: URL иконки меню.$position
: Позиция меню.
Использование относительного пути
Ваша задача — использовать абсолютный путь в $menu_slug
. Однако, как показали исследования, WordPress не поддерживает прямое использование абсолютных путей в этом параметре. Вместо этого можно использовать относительный путь к файлу плагина:
- Укажите путь к файлу плагина относительно корневой папки плагина, например:
папка-плагина/файл.php
. - Оставьте параметр
$function
пустым. - Это приведет к генерации ссылки вида
admin.php?page=папка-плагина/файл.php
. - При нажатии на ссылку будет загружен указанный файл как содержимое страницы админ-панели.
Пример реализации
Вот пример, как это может быть реализовано:
add_menu_page(
'Заголовок страницы', // Заголовок страницы
'Название меню', // Название меню
'manage_options', // Права доступа
'mypage/заголовок.php', // Путь к файлу плагина
'', // Функция вывода содержимого оставлена пустой
'dashicons-admin-generic', // Иконка меню
6 // Позиция в меню
);
Ограничения
Важно отметить, что использование данной техники может иметь ограничения. Например, возможности обработки пользовательских данных и безопасной работы с файлами все еще зависят от правильно реализованной логики плагина. Использование файлов напрямую может ухудшить безопасность вашего плагина, если не будут предусмотрены соответствующие меры предосторожности.
Заключение
В итоге, хотя вы не можете напрямую использовать абсолютный путь в $menu_slug
, подход с относительным путем к файлам плагинов – это гибкая альтернатива. Если у вас возникли дополнительные вопросы или вам необходима помощь с разработкой функционала вашего плагина, не стесняйтесь спрашивать.