Есть ли способ добавить абсолютный путь для функции add_menu_page?

Вопрос или проблема

Я создаю плагин для добавления опции добавить меню в админку WordPress и использую для этого функцию ниже:

<?php add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position ); ?>

Но я хотел бы добавить абсолютный путь для опции меню вместо $menu_slug.

введите описание изображения здесь

Пожалуйста, посмотрите на скриншот, я создал как “Заголовок”, так и “Подвал”, используя функцию add_menu_page. Я хотел бы дать абсолютный путь как для заголовка, так и для подвала. Я знаю, что для этого доступны плагины, но я создаю свой плагин с другой функциональностью.

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

Тем не менее, есть крайний случай, который позволяет загрузить файл плагина там.

  1. Передайте в качестве аргумента $menu_slug путь к файлу плагина относительно директории плагинов, например plugin-folder/boo.php.
  2. Опустите аргумент $function.
  3. Это сгенерирует ссылку вроде admin.php?page=plugin-folder/boo.php.
  4. Переход по ссылке загрузит файл как содержимое админ-страницы.

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

Ответ или решение

Короткий ответ на ваш вопрос: да, есть способ сделать так, чтобы 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 не поддерживает прямое использование абсолютных путей в этом параметре. Вместо этого можно использовать относительный путь к файлу плагина:

  1. Укажите путь к файлу плагина относительно корневой папки плагина, например: папка-плагина/файл.php.
  2. Оставьте параметр $function пустым.
  3. Это приведет к генерации ссылки вида admin.php?page=папка-плагина/файл.php.
  4. При нажатии на ссылку будет загружен указанный файл как содержимое страницы админ-панели.

Пример реализации

Вот пример, как это может быть реализовано:

add_menu_page(
    'Заголовок страницы',           // Заголовок страницы
    'Название меню',               // Название меню
    'manage_options',               // Права доступа
    'mypage/заголовок.php',         // Путь к файлу плагина
    '',                             // Функция вывода содержимого оставлена пустой
    'dashicons-admin-generic',      // Иконка меню
    6                               // Позиция в меню
);

Ограничения

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

Заключение

В итоге, хотя вы не можете напрямую использовать абсолютный путь в $menu_slug, подход с относительным путем к файлам плагинов – это гибкая альтернатива. Если у вас возникли дополнительные вопросы или вам необходима помощь с разработкой функционала вашего плагина, не стесняйтесь спрашивать.

Оцените материал
Добавить комментарий

Капча загружается...