get_template_part

Предназначена для поиска и подключения разных частей темы. Похожа на PHP функцию include(), только тут не нужно указывать путь до темы.

Обычно get_template_part() используется для подключения файла (части шаблона) в сам шаблон, например для подключения файла отвечающего за: хлебные крошки, меню навигации, блок ссылок пагинации, цикл вывода постов и так далее. Рассмотрим пример:

get_template_part( 'breadcrumbs' ); 
// подключит файл breadcrumbs.php из каталога текущей темы

get_template_part( 'breadcrumbs', 'footer' ); 
// подключит файл breadcrumbs-footer.php из каталога текущей темы

Если файла указанного для подключения не существует, то функция ничего не подключит и не вызовет никаких PHP ошибок.

Дочерние темы

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

Хуки из функции:
get_template_part_(slug)

Использование

<?php get_template_part( $slug, $name ) ?>
$slug(строка) (обязательный)
Название файла, который нужно подключить.
По умолчанию: нет
$name(строка)
Дополнительное название файла. Тоже самое, что параметр $name в функциях get_footer(), get_header() и т.п.
По умолчанию: нет

Примеры

#1 Использование файла loop.php в дочерней теме

Подразумевается что шаблоны лежат в каталоге wp-content/themes и родительская тема называется twentyten, а дочерняя twentytenchild, тогда следующий код будет пытаться подключить файлы в следующем порядке:

  1. wp-content/themes/twentytenchild/loop-index.php
  2. wp-content/themes/twentytenchild/loop.php
  3. wp-content/themes/twentyten/loop-index.php
  4. wp-content/themes/twentyten/loop.php
<?php get_template_part( 'loop', 'index' ); ?>

#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 Файл из подпапок

Если подгружаемые части находятся в папках то в первый параметр нужно указать относительный путь до файла:

<?php
function get_template_part( $slug, $name = null ) {
	/**
	 * Fires before the specified template part file is loaded.
	 *
	 * The dynamic portion of the hook name, `$slug`, refers to the slug name
	 * for the generic template part.
	 *
	 * @since 3.0.0
	 *
	 * @param string      $slug The slug name for the generic template.
	 * @param string|null $name The name of the specialized template.
	 */
	do_action( "get_template_part_{$slug}", $slug, $name );

	$templates = array();
	$name = (string) $name;
	if ( '' !== $name )
		$templates[] = "{$slug}-{$name}.php";

	$templates[] = "{$slug}.php";

	locate_template($templates, true, false);
}