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

18 июн. 2016 г., 07:10:01
Просмотры: 127K
Голосов: 76

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

0
Все ответы на вопрос 3
5
135

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.

18 июн. 2016 г. 07:20:12
Комментарии

что насчёт include (TEMPLATEPATH . '/myGallery/gallery_functions_include.php'); этот также ведёт в родительский каталог

Elroy Fernandes Elroy Fernandes
18 июн. 2016 г. 07:24:59

@ElroyFernandes Я добавил это в свой ответ. Вам нужна константа STYLESHEETPATH вместо этого

Tim Malone Tim Malone
18 июн. 2016 г. 07:31:29

Спасибо, что ответили на вопрос, а не просто сказали "читай документацию". Этот ответ первым появился в результатах моего поиска.

rinogo rinogo
4 мая 2017 г. 21:46:28

Хороший ответ, но неудачное название со стороны WordPress - это не только для таблиц стилей, но и для JS, ресурсов, инклюдов и т.д.

Paul Feakins Paul Feakins
21 сент. 2018 г. 19:29:32

@PaulFeakins Не начинай о непоследовательности в именовании в WordPress - это долгий и извилистый путь, ведущий в никуда! ;)

Tim Malone Tim Malone
22 сент. 2018 г. 00:55:24
0

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

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

Ваша стандартная тема находится здесь
------------------------------------
\\Site\wp-content\themes\some_theme
Ваша дочерняя тема находится здесь
---------------------------
\\Site\wp-content\themes\some_theme-child

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

\themes\some_theme
\themes\some_theme-child\ (все ваши пользовательские PHP-шаблоны здесь)
\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

Для ваших пользовательских стилей (не переопределяющих style.css темы) используйте подключение через: wp_enqueue_style( 'some-css', get_stylesheet_directory() . '/style/some.css' , false, '0.0.1', 'all');

Используйте get_stylesheet_directory_uri() для ваших XHR-запросов и т.д.

6 июн. 2018 г. 22:11:16
0

Замените

include (TEMPLATEPATH . '/path-to/my-file.php');

на

include dirname( __FILE__ ) . '/path-to/my-file.php';

это должно решить большинство распространённых проблем

27 окт. 2020 г. 09:35:58