Получить URL-адрес текущего файла с помощью PHP

У меня есть класс PHP, написанный для использования в темах или плагинах WordPress, которые загружают некоторые JS и CSS с использованием enqueue_script и enqueue_style при инициализации класса.

Мне нужно динамически получать URL-адрес (а не абсолютный путь) к каталогу, в который загружается класс, чтобы я мог передать этот URL-адрес enqueue_script и enqueue_style для загрузки ресурсов.

Структура каталогов wp-content ├── themes │ ├── theme_name │ │ ├── my_class │ │ │ ├── my_class.php │ │ │ ├── js (need URL) │ │ │ │ ├── file.js* │ │ │ ├── css │ │ │ │ ├── file.css*
Есть ли функция PHP, которая работает как [dirname][1], но возвращает URL-адрес файла, а не путь?

РЕДАКТИРОВАТЬ
Каталог my_class можно удалить где угодно, в теме или плагине, поэтому я не могу полагаться на основные функции WordPress для получения URL-адреса каталога класса.


person Darren Cooney    schedule 05.05.2017    source источник
comment
Пример того, что вы хотите получить? Что ты пробовал? Вероятно, вы захотите проверить get_site_url () ... что-то вроде $file_relative_path = "..."; $url = get_site_url(null, $file_relative_path, 'https');?   -  person Alejandro Iván    schedule 05.05.2017
comment
Его можно использовать в теме или плагине, поэтому get_site_url не работает. Каталог классов должен быть удален куда угодно, поэтому я не могу полагаться на основные функции WordPress.   -  person Darren Cooney    schedule 05.05.2017


Ответы (3)


__DIR__ предоставит вам путь к папке с текущим скриптом, а затем вы можете просто удалить корень документа (путь к папке, в которой размещены ваши файлы), а затем у вас останется URL-путь:

$file_path = __DIR__;
$url_path = str_replace($_SERVER['DOCUMENT_ROOT'], '', $file_path);
person Ryan Tuosto    schedule 05.05.2017

Попробуйте это решение по этому URL-адресу:

PHP: как получить URL-адрес относительного файла

Но вместо использования preg_replace попробуйте использовать str_replace.

person K.Martinez    schedule 05.05.2017

Поскольку вы работаете в WordPress, специфичный для WordPress способ сделать это - использовать get_stylesheet_directory_uri(). Он вернет URL-адрес текущей темы (или дочерней темы). См. https://developer.wordpress.org/reference/functions/get_stylesheet_directory_uri/. для получения полной информации.

person Martin_W    schedule 07.05.2021