get_theme_file_uri() WP 4.7.0
Получает URL указанного файла темы. Учитывает дочерние темы.
Функция пытается найти указанный файл сначала в дочерней теме, если его там нет, то берет его из основной. Таким образом дочерняя тема может переписывать файл основной темы.
Функция создана, для того, чтобы повсеместно использоваться при создании тем, чтобы все URL в теме поддерживали дочерние темы...
Функция отличается от своих аналогов: get_stylesheet_directory_uri()
и get_template_directory_uri()
, тем что она совмещает их обе. Т.е. она ищет файл, сначала в дочерней теме, если его там нет, то ищет его в родительской. А с помощью этих двух функций можно жестко указать URL либо дочерней либо родительской темы.
Используйте get_parent_theme_file_uri(), когда НЕ нужно учитывать дочернюю тему.
Используйте get_theme_file_path(), когда нужно аналогичным способом получить путь файла (не URL).
Читайте мой ответ на вопрос «Что лучше использовать» по этой функции.
get_stylesheet_directory()
, get_stylesheet_directory_uri()
, get_template_directory_uri()
Хуки из функции
Возвращает
Строку. URL файла.
Использование
get_theme_file_uri( $file );
- $file(строка)
Название файла который нужно найти в теме. Например file.js. Можно указать вложенный файл js/file.php или так /js/file.js.
Если оставить строку пустой, то вернет URL активной темы, учитывая дочернюю тему. См. get_stylesheet_directory_uri()
По умолчанию:
''
Примеры
#1 Получим URL файла темы с учетом дочерней темы
Допустим нам нужно подключить в теме файл js/my-script.js, но при этом нужно сделать так, чтобы при создании дочерней темы и такого же файла в ней, подключался файл дочерней темы.
Теперь в WP 4.7 это можно записать очень просто с помощью функции get_theme_file_uri()
:
wp_enqueue_script( 'my-script', get_theme_file_uri( 'js/my-script.js' ), array(), filemtime( get_theme_file_path('js/my-script.js') ) );
Список изменений
С версии 4.7.0 | Введена. |
Удобная штука, код короче получается. Пусть не намного, но всё же. Плюс убирает двойные слеши, если такое передал. Жаль нет the_theme_file_uri(), чтобы сразу выводить на экран можно было.