get_template_directory_uri указывает на родительскую тему, а не на дочернюю тему

35

У меня проблема в том, что 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');

Элрой Фернандес
источник

Ответы:

70

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());

Если дочерняя тема отсутствует, то функции 'template' и 'stylesheet' будут возвращать местоположение родительской темы.

Обратите внимание на разницу между этими функциями и функциями, оканчивающимися на _uri- они вернут абсолютный путь к серверу (например, /home/example/public_html/wp-content/yourtheme), тогда как _uriфункции вернут открытый адрес (он же URL) - например. http://example.com/wp-content/themes/yourtheme,

Тим Мэлоун
источник
что насчет включения (TEMPLATEPATH. '/myGallery/gallery_functions_include.php'); этот также идет в родительский каталог
Элрой Фернандес
@ElroyFernandes Я добавил это в свой ответ. STYLESHEETPATH ​​- это константа, которую вы хотите вместо этого
Тим Мэлоун
2
Спасибо за ответ на вопрос вместо того, чтобы просто сказать RTM. Это появилось первым в моих результатах поиска.
Риного
2
Хороший ответ, но плохое наименование со стороны WordPress - это не только для таблиц стилей, это для JS, ресурсов, включает и т.д.
Пол Фекинс
1
@PaulFeakins Не начинайте с именования несоответствий в WordPress - это долгий и извилистый путь, который ведет, кто знает, куда! ;)
Тим Мэлоун
0

Вы должны переместить свои пользовательские шаблоны, которые не контролируются активной темой, в дочернюю папку.

Храните тему отдельно от всех настроенных файлов, таким образом, тема может быть обновлена ​​без потери вашей пользовательской работы.

Ваша оригинальная тема живет здесь
------------------------------------
\\ \ Site сор-контент \ тем \ some_theme
Ваша детская тема живет здесь
---------------------------
\\ \ Site сор-контент \ тем \ some_theme-ребенок

Ваши пользовательские стили и шаблоны и все ваши включения (такие как пользовательский javascript, изображения, которые не сохраняются в WP, пользовательские шрифты, файлы данных json и любые плагины, которые вы можете поставить в очередь) должны быть перемещены в дочернюю папку вне темы.

\ Тем \ some_theme
\ themes \ some_theme-child \ (все ваши собственные файлы шаблонов php здесь)
\ Themes \ some_theme-ребенок \ изображения
\ Themes \ some_theme-ребенок \ включает в себя 
\ Themes \ some_theme-ребенок \ Языки
\ Тем \ some_theme-ребенок \ JSON 
\ Themes \ some_theme-ребенок \ стиль

Для пользовательских страниц стилей ( не для переопределенного стиля style.css ) поставьте в очередь wp_enqueue_style ('some-css', get_stylesheet_directory () . '/Style/some.css', false, '0.0.1', 'all');

Используйте get_stylesheet_directory_uri () с вашими вызовами xhr и т. Д.

Грег Болонья
источник