get_template_part() WP 3.0
Ищет и подключает указанный файл темы. Похожа на PHP функцию include()
, только не нужно указывать путь до темы.
Обычно эта функция используется для подключения файла (части шаблона) в сам шаблон, например для подключения файла отвечающего за: хлебные крошки, меню навигации, блок ссылок пагинации, цикл вывода постов и так далее. Рассмотрим пример:
// подключит файл breadcrumbs.php из каталога текущей темы get_template_part( 'breadcrumbs' ); // подключит файл breadcrumbs-footer.php из каталога текущей темы get_template_part( 'breadcrumbs', 'footer' );
Если файла указанного для подключения не существует, то функция ничего не подключит и не вызовет никаких PHP ошибок.
Дочерние темы
При использовании дочерних тем эта функция сначала попробует подключить файл из дочерней темы, если его нет, будет подключен файл из родительской темы.
Использование этой функциональности при разработке тем, позволяет пользователям этих тем переопределять файлы темы в дочерней теме, а это в свою очередь дает возможность полноценно использовать дочерние темы и не изменять файлы основной темы, чтобы при обновлении изменения не слетели. Для этого пользователю нужно просто создать файл с соответствующим именем в дочерней теме.
locate_template()
Хуки из функции
Использование
get_template_part( $slug, $name );
- $slug(строка) (обязательный)
- Название файла, который нужно подключить.
- $name(строка)
- Дополнительное название файла. Тоже самое, что параметр
$name
в функцияхget_footer()
,get_header()
и т.п.
По умолчанию: нет
Примеры
#1 Использование файла loop.php
в дочерней теме
Подразумевается что шаблоны лежат в каталоге wp-content/themes и родительская тема называется twentyten
, а дочерняя twentytenchild
, тогда следующий код будет пытаться подключить файлы в следующем порядке:
<?php get_template_part( 'loop', 'index' ); ?>
- wp-content/themes/twentytenchild/loop-index.php
- wp-content/themes/twentytenchild/loop.php
- wp-content/themes/twentyten/loop-index.php
- wp-content/themes/twentyten/loop.php
#2 Подключение навигации в шаблон с использованием файла nav.php
get_template_part( 'nav' ); // Navigation bar (nav.php) ?> get_template_part( 'nav', '2' ); // Navigation bar #2 (nav-2.php) ?> get_template_part( 'nav', 'single' ); // Navigation bar to use in single pages (nav-single.php) ?>
#3 Файл из подпапок
Если подгружаемые части находятся в папках то в первый параметр нужно указать относительный путь до файла:
get_template_part( 'inc/nav' ); // подключит файл inc/nav.php
А если нужно подключить файл inc/nav-single.php, то:
get_template_part( 'inc/nav', 'single' ); // или: get_template_part( 'inc/nav-single' );
В первом случае, сначала будет проверяться файл inc/nav-single.php и если его не существует то inc/nav.php. Во втором только inc/nav-single.php.
Список изменений
С версии 3.0.0 | Введена. |
Код get template part:
wp-includes/general-template.php
WP 5.3
Cвязанные функции
Из раздела: Подключение файлов темы
- comments_template()
- get_footer()
- get_header()
- get_parent_theme_file_path()
- get_parent_theme_file_uri()
- get_search_form()
Еще из тегов шаблона: Основные
- bloginfo()
- calendar_week_mod()
- get_archives_link()
- get_bloginfo()
- get_calendar()
- get_current_blog_id()
- is_404()
- is_active_sidebar()
- is_admin()
- is_archive()
- is_attachment()
- is_author()
- is_category()
- is_comment_feed()
- is_date()
- is_day()
- is_dynamic_sidebar()
- is_embed()
Здравствуйте! подскажите пожалуйста как сделать вывод постов на главной через файл loop а на всех последующих page 2,3,4.... вывод через loop2? Цель вывести на главной посты в 3 колонки а на всех page и категориях в 1 колонку Подскажите пожалуйста!
Спасибо огромное! А не подскажите как ещё сделать чтобы на главной выводилось два поста а на page 2,3,4 по три поста?
юзай объект WP Query
Тимур, здравствуйте!
Сразу хочу выразить свое почтение, Ваш сайт очень помогает мне вот уже который год.
Ну а теперь вопрос по существу: смотрите, у Вас в примере указано:
А если, например, так:
То нужно подключать файл таким образом:
Я правильно понимаю?
Уже сам разобрался. Мое предположение было правильным, если:
то:
Я копнул чуть глубже, и выяснил что если вдруг файл:
То:
Ну или просто:
Доброго времени!
Во время работы над проектом появился вопрос как с помощью get_template_part() передать значение переменной в подключаемый файл. Можете подсказать решение?
Может через глобальную переменную?
Приветствую!
Пытаюсь подключить шаблон из шорткода, и получается, что контент шаблона встаёт не в месте вызова шорткода, а просто в самом начале контента, из которого вызывается шорткод. Что можно сделать, чтобы подключаемый через шорткод контент шаблона вставал туда, где вызван шорткод?
Привет. Используй буфер PHP:
С переменной $html уже делаешь, что хочешь.
в теме самописного шаблона прописана PHP функция
стоит ли заменять на
Как вобщем сказывается это на сайте? на загрузке? будут ли лишние запросы в базу данных?
Если тема не публичная (не продается или распространяется для общего пользования), то нет смысла использовать эту функцию, потому что она в первую очередь нужна для поддержки дочерних тем. Она немного медленнее, потому что в ней используется фильтр и еще некоторые проверки. Но запросов лишних она не делает и в целом особо не отличается от прямого вызова.
А какой код должен быть если подключать файл находящийся в подпапке папки. Например, lib/inc/rating-box.php?
А разве не наоборот? Сначала
inc/nav-single.php
и если его не существует тоinc/nav.php
?Да так и будет, вы правы! Поправил, спасибо!