Как получить путь к текущей теме WordPress?
Этот код используется для получения директории текущего плагина: plugin_dir_url( __FILE__ )
.
Что следует использовать для получения директории текущей темы?

Думаю, стоит быть немного осторожным, потому что это зависит от того, что вы пытаетесь сделать.
Если вы используете дочернюю тему, функция get_template_directory();
всё равно будет ссылаться на родительскую тему. Однако get_stylesheet_directory();
будет указывать на текущую тему, будь то дочерняя или родительская. Обе эти функции возвращают абсолютные пути на сервере.
Если вам нужен полный URI, например, для ссылок или изображений, следует использовать get_template_directory_uri();
или get_stylesheet_directory_uri();
, выбирая подходящую функцию по указанным выше причинам.
Итог
get_stylesheet_directory()
: путь к файлам текущей темыget_stylesheet_directory_uri()
: URL-путь к текущей темеget_template_directory()
: путь к файлам родительской темыget_template_directory_uri()
: URL-путь к родительской теме

+1. Всегда используйте stylesheet
(путь/URL к файлу) для ссылки на текущую тему, а template
(путь/URL к файлу) оставьте для ссылки на родительскую тему.

К сожалению, get_template_directory() возвращает полный серверный путь вида /var/www/the/path/of/actual/wp-content/themes/mytheme
, что не подходит для работы с $wp_filesystem, если WP подключается через FTP.

@NoBugs - У меня тоже возвращался полный серверный путь, но использование get_stylesheet_directory_uri() вместо get_stylesheet_directory() решило проблему.

Спасибо! Большинство ответов, которые я нашел, частично помогли мне, используя get_stylesheet_directory(), но затем я оставался в корневой директории сервера. get_stylesheet_directory_uri() оказался ответом на мои молитвы!

get_stylesheet_directory_uri
— это то, что вам нужно. Она возвращает URL текущей темы. get_stylesheet_directory
вернет путь к файлу на сервере.
Например:
<img src="<?php echo get_stylesheet_directory_uri(); ?>/assets/image.png" />
Если вам нужна родительская тема, используйте get_template_directory
и get_template_directory_uri
— они работают аналогично.
Если родительской темы нет, обе функции вернут одинаковое значение.
Дополнительные материалы:
get_stylesheet_directory
- абсолютный путь к папке текущей темы
- например:
/var/www/yoursite/wp-content/themes/child_theme
get_template_directory
- абсолютный путь к папке родительской темы
- например:
/var/www/yoursite/wp-content/themes/parent_theme
get_stylesheet_directory_uri
- полный URL текущей темы
- например:
https://example.com/wp-content/themes/child_theme
get_template_directory_uri
- полный URL родительской темы
- например:
https://example.com/wp-content/themes/parent_theme
