Как получить путь к текущей теме WordPress?

5 апр. 2012 г., 22:27:30
Просмотры: 128K
Голосов: 44

Этот код используется для получения директории текущего плагина: plugin_dir_url( __FILE__ ).

Что следует использовать для получения директории текущей темы?

0
Все ответы на вопрос 2
5
83

Думаю, стоит быть немного осторожным, потому что это зависит от того, что вы пытаетесь сделать.

Если вы используете дочернюю тему, функция get_template_directory(); всё равно будет ссылаться на родительскую тему. Однако get_stylesheet_directory(); будет указывать на текущую тему, будь то дочерняя или родительская. Обе эти функции возвращают абсолютные пути на сервере.

Если вам нужен полный URI, например, для ссылок или изображений, следует использовать get_template_directory_uri(); или get_stylesheet_directory_uri();, выбирая подходящую функцию по указанным выше причинам.

Итог

5 апр. 2012 г. 23:51:27
Комментарии

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

Chip Bennett Chip Bennett
6 апр. 2012 г. 00:00:12

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

NoBugs NoBugs
11 сент. 2014 г. 06:41:37

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

TheLibzter TheLibzter
5 февр. 2015 г. 00:19:10

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

sigmapi13 sigmapi13
7 авг. 2020 г. 20:44:07

Ах, Wordpress. Обратная совместимость до абсурда. (Ни один здравомыслящий человек не стал бы намеренно использовать такие двусмысленные соглашения об именовании!)

rinogo rinogo
3 сент. 2021 г. 21:38:28
2
13

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
5 апр. 2012 г. 22:29:25
Комментарии

get_stylesheet_directory() — это правильный ответ. get_template_directory() будет указывать на родительскую тему, если используется дочерняя тема.

Lucas Bustamante Lucas Bustamante
11 июл. 2020 г. 05:20:46

Я скорректировал ответ соответствующим образом

Tom J Nowell Tom J Nowell
25 авг. 2020 г. 17:02:58