Часть шаблона

Оригинальное название: template part

Коротко

Отдельный PHP-файл классической темы WordPress с повторяющимся фрагментом разметки — шапкой, подвалом, карточкой записи, — который подключают из разных шаблонов.

Что такое «Часть шаблона»

Без частей каждый файл темы содержал бы полную копию шапки и подвала, и смена телефона в шапке означала бы правку десятка файлов. Поэтому общие куски выносят отдельно, а шаблоны лишь собирают страницу из них. Для типовых частей у WordPress есть готовые функции, для остальных — универсальная.

Функции подключения

  • get_header(), get_footer(), get_sidebar() подключают header.php, footer.php и sidebar.php. С аргументом, например get_header( 'shop' ), подключится header-shop.php.
  • get_template_part( $slug, $name ) ищет файл {$slug}-{$name}.php, а если его нет — {$slug}.php.

Важное отличие от обычного include: функции сначала ищут файл в дочерней теме, потом в родительской. Поэтому дочерняя тема может заменить одну карточку товара, не копируя весь шаблон каталога.

Пример: карточка с параметрами

// в archive.php
while ( have_posts() ) {
    the_post();
    get_template_part( 'template-parts/card', get_post_type(), array(
        'show_date' => false,
    ) );
}

// в template-parts/card-product.php
if ( ! empty( $args['show_date'] ) ) {
    echo esc_html( get_the_date() );
}

Третий аргумент $args появился в WordPress 5.5. До этого данные в часть передавали через глобальные переменные или set_query_var(), и такой код ещё часто встречается в старых темах.

Как удобно организовать

Распространённое соглашение — складывать части в папку template-parts/ и называть по схеме «что-вариант»: content-single.php, card-product.php. Внутри части лучше не делать отдельных запросов к базе: она может вызываться в цикле десятки раз. Если часть разрослась и сама подключает другие части, это повод проверить, не пора ли упростить структуру. В блочных темах аналог называется частью блочного шаблона и редактируется визуально.

Обновлено:

Все термины раздела «WordPress»

Что будем искать? Например,Продвижение