Как сделать так, чтобы get_template_part всегда проверял сначала дочернюю тему?

19 июн. 2011 г., 15:55:34
Просмотры: 21.2K
Голосов: 9

Как заставить WordPress всегда проверять сначала папку дочерней темы при выполнении get_template_part?

Пример: дочерняя тема загружает get_template_part('content', 'inventory') в single.php. Поскольку все дочерние темы (а их много) используют один и тот же базовый шаблон инвентаря, файл content-inventory.php находится в родительской теме. Пока всё хорошо.

Я хотел бы добавить небольшую секцию в указанный шаблон инвентаря, которая будет уникальной для каждой дочерней темы. Добавление get_template_part('content', 'inventory-special') в content-inventory.php не приведёт к первоочередной проверке директории дочерней темы.

1
Комментарии

Двое, кто поставил минус моему ответу и не оставил комментария с объяснением, спасибо, что вообще ничего. Как человек может улучшаться без конструктивной критики?

MTT MTT
19 июн. 2011 г. 23:24:06
Все ответы на вопрос 2
2

По умолчанию это работает именно так. Функция get_template_part() использует locate_template(), которая последовательно проверяет файлы шаблонов по степени их специфичности и путям стилей/шаблонов.

Итак, если ваша Дочерняя Тема содержит файл content-inventory.php, то get_template_part() подключит именно его; если такого файла нет, он будет искать content-inventory.php в Родительской Теме. Если и там его не окажется, функция проверит наличие content.php сначала в Дочерней, а затем в Родительской Теме.

РЕДАКТИРОВАТЬ:

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

Вы хотите добавить новый файл-часть шаблона внутри файла Родительской Темы под названием content-inventory.php, верно?

Единственный способ, насколько мне известно, сделать это — скопировать content-inventory.php в вашу Дочернюю Тему, а затем добавить новый вызов get_template_part() в нужном месте.

Если файл с именем content-inventory.php присутствует и в Родительской, и в Дочерней Теме, WordPress всегда будет использовать версию из Дочерней Темы, если он подключён через get_template_part().

19 июн. 2011 г. 16:47:28
Комментарии

@Kaiser, @Chip Bennett: WP, очевидно, проверит родительскую тему на наличие файла content-inventory.php. Кодекс и простой опыт делают это очевидным. Однако, если искомый файл (уровень 2) находится в папке родительской темы, WP не перепроверяет дочернюю тему на наличие get_template_part, содержащегося в искомом файле (третий уровень вложенности). Работало ли это по-другому у вас?

MTT MTT
19 июн. 2011 г. 23:17:26

Я не понимаю ваш вопрос/проблему. Для любого заданного имени файла шаблона WordPress всегда сначала проверяет Дочернюю Тему. Можете объяснить, что вы имеете в виду под файлами второго и третьего уровня?

Chip Bennett Chip Bennett
19 июн. 2011 г. 23:37:31
0

get_template_part() делает это по умолчанию.

19 июн. 2011 г. 16:46:41