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

Если путь к какому-либо файлу «захардкожен» — мы можем получить разные неожиданные ошибки.

А далее каждый раз встает вопрос, каким методом можно получить путь до файла? Скажем это js, css или какая-то картинка…

Тут у нас есть целая коллекция разнообразных методов.

Однако я всегда хотел как-то унифицировать эту штуку. Потому что часто использую код повторно. Написал какие-то вещи в плагине, через месяц мне это понадобилось в теме. Или пишу в дочерней, а потом интегрирую в родителя. Или начал писать функционал в теме, а потом решил это вытащить в плагин. Потому я стараюсь логически группировать функционал по файлам и папкам. Чтобы затем повторно это использовать просто через include или require.

Однако внутренние ресурсы подключенные разными методами не всегда хорошо переживают такую пересадку почек между пациентами.

Например путь до файла стилей получен через https://developer.wordpress.org/reference/functions/get_stylesheet_directory_uri/

А нужно пересадить компонент в основную тему. Получаем ошибку. Или наоборот.

Или подключен файл в плагине через метод https://developer.wordpress.org/reference/functions/plugin_dir_url/

А потом мне надо перетащить компонент в тему. Снова получаю ошибку.

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

Для получения URL

Лучше использовать метод:  https://developer.wordpress.org/reference/functions/plugins_url/

Если у меня какой-то файл нужно подключить относительно папки текущего компонента, то пишем просто:


$img_url = plugins_url( 'folder/myimage.jpg', __FILE__ );

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

Для получения пути


$file_path = dirname(__FILE__) . '/inc/'. 'file.php';

Теперь в переменной $file_path лежит путь до файла относительно текущего файла. И если копировать эту папку между компонентами — ничего не ломается.