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

Якщо дочірньої теми немає, то і функції 'шаблон', і «таблиця стилів» повернуть батьківське розташування теми.

Зверніть увагу на різницю між цими функціями та функціями, що закінчуються _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. Це з’явилося першим у моїх результатах пошуку.
rinogo

2
Хороша відповідь, але погана назва з боку WordPress - це не тільки для таблиць стилів, це для JS, активів, включає в себе і т. Д.
Пол Феакінс,

1
@PaulFeakins Не починайте називати невідповідності в WordPress - це довга і вітряна дорога, яка веде, хто знає-куди! ;)
Тім Малоун

0

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

Тримайте тему окремо від усіх налаштованих файлів, тим самим тему можна оновити, не втрачаючи вашої власної роботи.

Тут знаходиться ваша тема поза темою
------------------------------------
\\ Сайт \ wp-content \ теми \ some_theme
Тут живе ваша дитяча тема
---------------------------
\\ Сайт \ wp-content \ теми \ some_theme-child

Ваші користувацькі стилі та шаблони та всі ваші включення (такі речі, як користувацький JavaScript, зображення, які не зберігаються у WP, спеціальні шрифти, файли даних json та будь-які додатки, які ви могли б отримати в них), слід перенести у дочірню папку ЗАРАЗ теми.

\ теми \ деякі_теми
\ themes \ some_theme-child \ (всі власні файли шаблонів PHP тут)
\ теми \ деякі_теми-дитини \ образи
\ themes \ some_theme-child \ включає 
\ 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 тощо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.