получить 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
Строка в стиле дочерней темы.css.
Другие соответствующие факты:
- Я использую WordPress с несколькими сайтами
- Я разработал родительскую тему и использую ее для одного из других сайтов в моем мультисайте, и она отлично работает
- Обе темы (родительская и ребенок) активированы в сети и доступны на сайте, на котором я работаю
- Я попытался указать дочернюю тему на тему двадцать четыре, и я вижу то же поведение, поэтому я не думаю, что это проблема с родительской темой.
- Я отключил все свои плагины, чтобы проверить, не был ли один из них проблемой, но безуспешно - ни один из плагинов, похоже, не является причиной этого
- Я создал копию twentyfourteen и сделал ее дочерней темой моей родительской темы и той же проблемой случается
- В моей копии twentyfourteen я также добавил шаблон: строка в style.css, чтобы сделать ее дочерней для twentyfourteen, и я также вижу такое же поведение (т.Е. На странице "Управление темами" указано, что скопированная тема является дочерней для twentyfourteen, но функция get_template_directory_uri не предоставляет мне каталог родительской темы)
Есть ли у кого-нибудь какие-либо предложения по поводу того, в чем может быть проблема здесь? Или я неправильно истолковываю, как get_template_directory_uri()
должен работать?
2 answers
ПРИЧИНА
Хорошо, после изучения кода WordPress и базы данных проблема заключалась в
get_option('template')
, который вызывается
wp-includes/theme.php : get_template()
Возвращал дочернюю тему, а не родительскую тему, но только для определенного сайта в моем мультисайте. И просматривая таблицу wp_{SITE-ID}_options для этого сайта, запись базы данных, где
option_name = "template"
Запись указывала на дочернюю тему, а не на родительскую тему. Я не уверен, почему детали темы на страница "Управление темами" на панели мониторинга указывала, что моя проблемная дочерняя тема была дочерней темой, когда запись в базе данных была неправильной.
Что касается того, почему эта запись в базе данных была испорчена, я не уверен, но когда я изначально пытался разработать проблемную дочернюю тему, она сломала мой мультисайт WordPress (включая панель мониторинга), и поэтому я временно переименовал имя папки темы на сервере, чтобы WordPress вернулся к теме по умолчанию - возможно, это была причина, по которой я изменил название. причина.
РЕШЕНИЕ
Переключение темы на другую тему, а затем обратно на дочернюю тему исправило это - это приводит к тому, что для соответствующей записи базы данных (т. Е. имя_параметра = "шаблон" в wp_{ИДЕНТИФИКАТОР САЙТА}_опции) устанавливается правильное значение, т. Е. родительская тема.
Что вам нужно, так это get_stylesheet_directory_uri
, который работает точно так же, как get_template_directory_uri
, но он вернет каталог дочерней темы, если вы используете дочернюю тему, но он вернет каталог родительской темы, если нет.
echo get_stylesheet_directory_uri();