get_template_directory_uri() в дочерней теме указывает на дочернюю тему
Согласно документации (https://codex.wordpress.org/Child_Themes и https://developer.wordpress.org/reference/functions/get_template_directory_uri/), я понимаю, что get_template_directory_uri()
должна возвращать URL каталога родительской темы при использовании в дочерней теме. Но у меня это не работает.
В дочерней теме, которую я пытаюсь разработать, когда я использую get_template_directory_uri()
, она возвращает URL каталога дочерней темы, а не каталога родительской темы. Если я нажму на "Детали темы" для дочерней темы на странице управления темами, WordPress указывает, что тема является дочерней для другой темы, именно так, как я и ожидал. У меня есть строка
Template: parent
в файле style.css дочерней темы.
Другие важные факты:
- Я использую WordPress Multi-Site
- Я разработал родительскую тему и использую её для одного из других сайтов в моей Multi-Site, и она работает отлично
- Обе темы (родительская и дочерняя) активированы в сети и доступны на сайте, над которым я работаю
- Я попробовал указать дочернюю тему на twentyfourteen и наблюдаю то же поведение, поэтому не думаю, что проблема в родительской теме
- Я отключил все плагины, чтобы проверить, не является ли один из них причиной проблемы - безуспешно, ни один из плагинов не является причиной
- Я создал копию twentyfourteen и сделал её дочерней темой моей родительской темы, и возникает та же проблема
- В моей копии twentyfourteen я также добавил строку Template: в style.css, чтобы сделать её дочерней темой twentyfourteen, и я наблюдаю то же поведение (то есть, страница управления темами указывает, что скопированная тема является дочерней для twentyfourteen, но функция get_template_directory_uri не даёт мне каталог родительской темы)
Есть ли у кого-нибудь предложения о том, в чём может быть проблема? Или я неправильно интерпретирую, как должна работать get_template_directory_uri()
?

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

Спасибо за ответ, но я использую дочернюю тему и пытаюсь получить таблицу стилей родительской темы, а не дочерней. Я следую инструкциям на https://codex.wordpress.org/Child_Themes по подключению таблицы стилей родительской темы вместе с дочерней в дочерней теме, но функция get_template_directory_uri(), которую они используют в примере, возвращает URL дочерней темы, что не помогает мне получить URL для таблицы стилей родительской темы.

ПРИЧИНА
После тщательного анализа кода WordPress и базы данных, проблема заключалась в том, что функция
get_option('template')
вызываемая через
wp-includes/theme.php : get_template()
возвращала дочернюю тему вместо родительской, но только для одного конкретного сайта в моей мультисайтовой сети. При проверке таблицы wp_{SITE-ID}_options для этого сайта, запись в базе данных, где
option_name = "template"
указывала на дочернюю тему, а не на родительскую. Непонятно, почему в разделе "Сведения о теме" в админ-панели отображалось, что проблемная тема является дочерней, хотя запись в базе данных была некорректной.
Точная причина повреждения этой записи в БД неизвестна, но когда я изначально разрабатывал проблемную дочернюю тему, она сломала всю мою мультисайтовую сеть WordPress (включая админ-панель). Временное переименование папки темы на сервере, чтобы WordPress использовал тему по умолчанию, могло стать причиной этой проблемы.
РЕШЕНИЕ
Переключение темы на другую и обратно на дочернюю тему исправило ситуацию - это привело к обновлению соответствующей записи в базе данных (option_name = "template" в wp_{SITE-ID}_options), установив правильное значение - родительскую тему.

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