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

По умолчанию это работает именно так. Функция 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()
.

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

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