получить 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() должен работать?

Author: Nathan Johnson, 2017-05-16

2 answers

ПРИЧИНА

Хорошо, после изучения кода WordPress и базы данных проблема заключалась в

get_option('template')

, который вызывается

wp-includes/theme.php : get_template()

Возвращал дочернюю тему, а не родительскую тему, но только для определенного сайта в моем мультисайте. И просматривая таблицу wp_{SITE-ID}_options для этого сайта, запись базы данных, где

option_name = "template"

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

Что касается того, почему эта запись в базе данных была испорчена, я не уверен, но когда я изначально пытался разработать проблемную дочернюю тему, она сломала мой мультисайт WordPress (включая панель мониторинга), и поэтому я временно переименовал имя папки темы на сервере, чтобы WordPress вернулся к теме по умолчанию - возможно, это была причина, по которой я изменил название. причина.

РЕШЕНИЕ

Переключение темы на другую тему, а затем обратно на дочернюю тему исправило это - это приводит к тому, что для соответствующей записи базы данных (т. Е. имя_параметра = "шаблон" в wp_{ИДЕНТИФИКАТОР САЙТА}_опции) устанавливается правильное значение, т. Е. родительская тема.

 4
Author: Bill, 2017-05-18 20:29:01

Что вам нужно, так это get_stylesheet_directory_uri, который работает точно так же, как get_template_directory_uri, но он вернет каталог дочерней темы, если вы используете дочернюю тему, но он вернет каталог родительской темы, если нет.

echo get_stylesheet_directory_uri();
 3
Author: Celso Bessa, 2017-05-16 21:35:26