Возможно вы уже знаете, что файл header.php
(и все его производные — header-1.php
, header-home.php
, header-main.php
и так далее) подключает функция get_header(), файл footer.php
— get_footer(), а функция get_sidebar() подключит sidebar.php
.
Если хотите разобраться в создании тем для WordPress, рекомендую вам мой видеокурс.
А как подключить скажем nav.php
или content.php
? А что, если файл находится в подпапке темы?
Итак, get_template_part()
. По сути это аналог include()
или require()
(функции PHP), но с некоторыми особенностями.
get_template_part( $slug, $name = null, $args = array() )
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. Про цикл рекомендую посмотреть отдельный видеоурок.
Как я уже упоминал выше, начиная с версии 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' );
Приоритет подключения файлов в данном случае:
nav-footer.php
в дочерней теме,nav-footer.php
в родительской теме,nav.php
в дочерней теме,nav.php
в родительской теме.Хук запускается в самом начале функции и позволяет выполнить какой-либо код в зависимости от значений переменных $slug
и $name
.
do_action( "get_template_part_{$slug}", $slug, $name );
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Здравствуйте!
Использую адаптивный шаблон "Awaken".
Установил плагин "Ultimate WP Query Search Filter", но возникли проблемы с отображением результатов ajax-поиска... автор плагина дал мне код для function.php -
Думаю проблема с - get_template_part( 'content', get_post_format() );
Почему-то не корректно отображается вывод статей... стили применяются к каждой статье, а не ко всем, как в стандартном поиске.
В чем может быть загвоздка?
Заранее спасибо!
В index.php есть код, который отвечает за "правильный" вывод статей -
Вот он почему-то и не срабатывает в ajax-выводе....
Здравствуйте!
Сорри за задержку, был в отъезде.
В первую очередь на вашем месте я бы проанализировал HTML статей с которыми всё ок и HTML статей, с которыми проблемы. Нашел бы, в чем отличие. И уже отталкивался бы от этого.