get_template_part() — подключает файлы темы

Возможно вы уже знаете, что файл header.php (и все его производные — header-1.phpheader-home.phpheader-main.php и так далее) подключает функция get_header(), файл footer.php — get_footer(), а функция get_sidebar() подключит sidebar.php.

А как подключить скажем nav.php или content.php? А что, если файл находится в подпапке темы?

Итак, get_template_part(). По сути это аналог include() или require() (функции PHP), но с некоторыми особенностями.

  • Во-первых, она уже знает, где расположена ваша тема и будет искать запрошенный файл непосредственно в директории текущей темы.
  • Во-вторых, если запрашиваемого файла не существует, она не выдаст предупреждение или ошибку, кроме того, она попробует подключить другой подходящий файл.
  • Поддерживает дочерние темы WordPress.
  • Позволяет передавать переменные в подключаемый файл (с версии WordPress 5.5).
get_template_part( $slug, $name = null, $args = array() )
$slug
(строка) название файла, который будем подключать, его первая часть, также может содержать названия директорий через слэш.
$name
(строка) вторая часть названия (для того, чтобы понять, как работать с параметрами функции, смотрите примеры).
$args
(массив) аргументы, которые будут переданы в подключаемый файл (с версии 5.5.0)

Примеры

get_template_part( 'mymenu' ); // mymenu.php в директории темы
get_template_part( 'mymenu', 'header' ); // mymenu-header.php в папке темы
get_template_part( 'mymenu', 'footer' ); // mymenu-footer.php в папке темы
get_template_part( 'parts/entry' ); // entry.php в директории 'parts', которая, в свою очередь, находится в папке с темой
get_template_part( 'parts/entry', 'video' ); // entry-video.php в директории 'parts'

Динамическое подключение

Мы также можем подключать файлы динамически, например в зависимости от возвращаемых значений функций get_post_type() и get_post_format().

get_template_part( 'includes/entry', get_post_type() );
get_template_part( 'includes/entry', get_post_format() );

Передача параметров

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

get_template_part(
    'entry',
    get_post_type(),
    array( // массив с параметрами
        'key1' => 'value1',
        'key2' => 'value2'
    )
);

Предположим мы подключаем какой-то шаблон для вывода поста в цикле, типо entry-тип поста.php и при этом хотим передать какие-то два параметра в шаблон.

То внутри нашего шаблона мы можем обратиться к ним следующим образом:

var_dump( $args );  // Можем распечатать всё, чтобы понять, что внутри
echo $args[ 'key1' ];  // Выводим значение определённого параметра

Порядок подключения файлов

get_template_part( 'nav', 'footer' );

Приоритет подключения файлов в данном случае:

  1. nav-footer.php в дочерней теме,
  2. nav-footer.php в родительской теме,
  3. nav.php в дочерней теме,
  4. nav.php в родительской теме.

Хук get_template_part_{$slug}

Хук запускается в самом начале функции и позволяет выполнить какой-либо код в зависимости от значений переменных $slug и $name.

do_action( "get_template_part_{$slug}", $slug, $name );

Миша

Недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии — 3

Комментирование этого поста более не доступно.