Функция plugins_url()
в WordPress позволяет получить URL для ресурсов внутри каталога плагинов или каталога must-use плагинов (mu-plugins
). Она может быть полезна при создании плагинов для формирования ссылки на конкретные файлы или директории, такие как стили или изображения.
plugins_url( string $path = '', string $plugin = '' ): string
Функция возвращает абсолютный URL к каталогу плагинов или mu-plugins
без завершающего слэша. Если указан параметр $path
, функция добавляет его к базовому URL. Чтобы указать конкретную директорию или файл внутри плагина, можно использовать __FILE__
во втором параметре, чтобы путь стал относительным к текущему файлу.
Параметры
$path
(строка, необязательный)
Путь до файла или директории внутри каталога плагинов. Если параметр не указан, возвращает URL к корневой директории плагинов.$plugin
(строка, необязательный)
Полный путь к файлу плагина. Обычно используется__FILE__
для получения URL, относительно директории плагина, откуда вызвана функция.
Возвращаемое значение
Функция возвращает строку с URL к каталогу плагинов или к указанному файлу, если задан путь $path
.
Рекомендации по использованию
Не рекомендуется использовать plugins_url()
в глобальном контексте. Лучше вызывать её в хуках, например, plugins_loaded
или более поздних, чтобы гарантировать совместимость с другими плагинами, которые могут добавлять фильтры к URL.
Пример 1: Получение ссылки на изображение в директории плагина
Допустим, у нас есть папка assets
в каталоге плагина, где находится изображение logo.png
. Для формирования ссылки на это изображение используем:
echo '<img src="' . plugins_url('assets/logo.png', __FILE__) . '" alt="Plugin Logo">';
Этот код вернет:
<img src="http://example.com/wp-content/plugins/my-plugin/assets/logo.png" alt="Plugin Logo">
Пример 2: Получение базового URL каталога плагинов
Если параметр $path
не указан, функция вернет базовый URL каталога всех плагинов:
echo plugins_url();
// Выведет: http://example.com/wp-content/plugins
Пример 3: Использование __FILE__
для динамического указания пути
Если нужно получить ссылку на файл внутри плагина, при этом избегая жесткого указания имени папки плагина, используем __FILE__
:
echo plugins_url('style.css', __FILE__);
// Выведет: http://example.com/wp-content/plugins/my-plugin/style.css
Такой подход делает код более гибким — ссылка останется рабочей даже если плагин будет переименован.
Пример 4: Вызов из подкаталога плагина
Когда файл, откуда вызывается plugins_url()
, находится в подкаталоге, можно использовать dirname(__FILE__)
во втором параметре, чтобы вернуться к корню плагина:
echo '<script src="' . plugins_url('js/script.js', dirname(__FILE__)) . '"></script>';
Этот код вернет ссылку на script.js
в подкаталоге плагина, корректно формируя путь.
Хуки и фильтры
Функция использует apply_filters()
для применения фильтров к URL:
return apply_filters('plugins_url', $url, $path, $plugin);
Это позволяет другим плагинам изменять результат plugins_url()
, если они подключают собственные фильтры к этому хуку.
Заключение
Функция plugins_url()
— удобная функция для формирования динамических URL в плагинах WordPress. Её можно использовать для получения ссылок на ресурсы внутри каталога плагинов, избегая жесткого кодирования пути. Вызывайте plugins_url()
внутри подходящих хуков, чтобы поддерживать совместимость с другими плагинами и избежать потенциальных