get_template_directory_uri указывает на родительскую тему, а не на дочернюю тему
2 ответ
- голосов
-
- 2016-06-18
get_template_directory_uri()
всегда будет возвращать URI текущей родительской темы.Чтобы вместо этого получить URI дочерней темы,вам нужно использовать
get_stylesheet_directory_uri()
.Вы можете найти эти в документации вместе со списком других полезных функций для получения различных местоположений каталогов тем.
Если вы предпочитаете использовать константу,тогда
TEMPLATEPATH
похож на вызовget_template_directory()
(то есть родительской темы) иSTYLESHEETPATH
сродни вызовуget_stylesheet_directory()
(т. е. дочерней темы).Эти константы устанавливаются ядром WordPress в
wp-includes/default-constants.php
и в основном выглядят следующим образом:define('TEMPLATEPATH', get_template_directory()); ... define('STYLESHEETPATH', get_stylesheet_directory());
Если дочерняя тема отсутствует,то обе функции "шаблон" и "таблица стилей" вернут местоположение родительской темы.
Обратите внимание на разницу между этими функциями и функциями,заканчивающимися на
_uri
- они вернут абсолютный путь к серверу (например,/home/example/public_html/wp-content/yourtheme
),тогда как функции_uri
вернут публичный адрес (он же URL) - например.http://example.com/wp-content/themes/yourtheme
.get_template_directory_uri()
will always return the URI of the current parent theme.To get the child theme URI instead, you need to use
get_stylesheet_directory_uri()
.You can find these in the documentation, along with a list of other useful functions for getting various theme directory locations.
If you prefer to use a constant, then
TEMPLATEPATH
is akin to callingget_template_directory()
(i.e. the parent theme), andSTYLESHEETPATH
is akin to callingget_stylesheet_directory()
(i.e. the child theme).These constants are set by WordPress core in
wp-includes/default-constants.php
and basically look like this:define('TEMPLATEPATH', get_template_directory()); ... define('STYLESHEETPATH', get_stylesheet_directory());
If there is no child theme, then both the 'template' and 'stylesheet' functions will return the parent theme location.
Note the difference between these functions and the functions ending in
_uri
- these will return the absolute server path (eg./home/example/public_html/wp-content/yourtheme
), whereas the_uri
functions will return the public address (aka URL) - eg.http://example.com/wp-content/themes/yourtheme
.-
как насчетinclude (TEMPLATEPATH. '/myGallery/gallery_functions_include.php');этот также идет в родительский каталогwhat about include (TEMPLATEPATH . '/myGallery/gallery_functions_include.php'); this one also goes to the parent directory
- 0
- 2016-06-18
- Elroy Fernandes
-
@ElroyFernandes Я добавил это к своему ответу.STYLESHEETPATH - это константа,которая вам нужна вместо@ElroyFernandes I've added this to my answer. STYLESHEETPATH is the constant you'd want instead
- 0
- 2016-06-18
- Tim Malone
-
Спасибо,что ответили на вопрос,а не просто сказали RTM.Это появилось первым в моих результатах поиска.Thanks for answering the question instead of just saying RTM. This popped up first in my search results.
- 2
- 2017-05-04
- rinogo
-
Хороший ответ,но плохое именование со стороны WordPress - это не только для таблиц стилей,это для JS,ресурсов,включает и т. Д.Good answer but bad naming on WordPress's part - it's not just for stylesheets, it's for JS, assets, includes etc.
- 2
- 2018-09-21
- Paul Feakins
-
@PaulFeakins Не начинайте говорить о несоответствиях в именах в WordPress - это долгий и извилистый путь,ведущий неизвестно куда!;)@PaulFeakins Don’t get started on naming inconsistencies in WordPress - that’s a long and windy road that leads who-knows-where! ;)
- 1
- 2018-09-21
- Tim Malone
-
- 2018-06-06
Вам следует переместить пользовательские шаблоны,которые не контролируются активной темой,в дочернюю папку.
Храните тему отдельно от всех настроенных файлов,чтобы можно было обновить тему без потери пользовательской работы.
Здесь живет ваша нестандартная тема ------------------------------------ \\ Сайт \ wp-content \themes \ some_theme
Здесь живет ваша дочерняя тема --------------------------- \\ Сайт \ wp-content \themes \ some_theme-child
Ваши пользовательские стили и шаблоны,а также все ваши включения (такие как пользовательскийjavascript,изображения,которые не сохраняются в WP,пользовательские шрифты,файлы данныхjson и любые плагины,которые вы можете поставить в очередь) должны быть перемещены в дочернюю папку ВНЕ темы. .
\themes \ some_theme \themes \ some_theme-child \ (здесь все ваши файлы пользовательских шаблоновphp) \ темы \ some_theme-child \images \themes \ some_theme-child \ включает \themes \ some_theme-child \ languages \ темы \ some_theme-child \json \themes \ some_theme-child \ style
Для страниц с пользовательскими стилями ( не переопределенным style.css темы) поставьте в очередь с wp_enqueue_style ('some-css',get_stylesheet_directory () . '/style/some.css ',false,' 0.0.1 ',' все ');
Используйте get_stylesheet_directory_uri () с вашими вызовами xhr и т. д.
You should move your custom templates, those that are not controlled by the active theme, to a child folder.
Keep the theme separate from all customized files this way the theme can be updated without losing your custom work.
Your out-of-the-box theme lives here ------------------------------------ \\Site\wp-content\themes\some_theme
Your child theme lives here --------------------------- \\Site\wp-content\themes\some_theme-child
Your custom styles and templates and all your includes (things like custom javascript, images that are not saved to WP, custom fonts, json data files, and any plugins that you might enqueue) should be moved to child folder OUTSIDE of theme.
\themes\some_theme \themes\some_theme-child\ (all your custom php template files here) \themes\some_theme-child\images \themes\some_theme-child\includes \themes\some_theme-child\languages \themes\some_theme-child\json \themes\some_theme-child\style
For your custom style pages (not the theme's overridden style.css) enqueue with wp_enqueue_style( 'some-css', get_stylesheet_directory() . '/style/some.css' , false, '0.0.1', 'all');
Use get_stylesheet_directory_uri() with your xhr calls, etc.
У меня проблема заключается в том,чтоget_template_directory_uri указывает на родительскую тему,например
site/wp-content/themes/twentythirteen/myGallery/gallery_functions_include.php
но я хочу,чтобы он указывал на мою дочернюю тему,которая должна быть
site/wp-content/themes/child-twentythirteen/myGallery/gallery_functions_include.php
я использую
include (TEMPLATEPATH . '/myGallery/gallery_functions_include.php');