Возможно вы уже знаете, что файл header.php
(и все его производные — header-1.php
, header-home.php
, header-main.php
и так далее) подключает функция get_header(), файл footer.php
— get_footer(), а функция get_sidebar() подключит sidebar.php
.
А как подключить скажем nav.php
или content.php
? А что, если файл находится в подпапке темы?
Итак, get_template_part()
. По сути это аналог include()
или require()
(функции PHP), но с некоторыми особенностями.
- Во-первых, она уже знает, где расположена ваша тема и будет искать запрошенный файл непосредственно в директории текущей темы.
- Во-вторых, если запрашиваемого файла не существует, она не выдаст предупреждение или ошибку, кроме того, она попробует подключить другой подходящий файл.
- Поддерживает дочерние темы WordPress.
get_template_part( $slug, $name = null )
|
- $slug
- (строка) название файла, который будем подключать, его первая часть, также может содержать названия директорий через слэш.
- $name
- (строка) вторая часть названия (для того, чтобы понять, как работать с параметрами функции, смотрите примеры).
Примеры
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() );
|
Порядок подключения файлов
get_template_part( 'nav', 'footer' );
|
Приоритет подключения файлов в данном случае:
-
nav-footer.php
в дочерней теме,
-
nav-footer.php
в родительской теме,
-
nav.php
в дочерней теме,
-
nav.php
в родительской теме.
Хук get_template_part_{$slug}
Хук запускается в самом начале функции и позволяет выполнить какой-либо код в зависимости от значений переменных $slug
и $name
.
do_action( "get_template_part_{$slug}", $slug, $name );
|