Функция 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() внутри подходящих хуков, чтобы поддерживать совместимость с другими плагинами и избежать потенциальных