WordPress как на ладони
rgbcode is looking for WordPress developers. Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

get_template_part()WP 3.0.0

Ищет и подключает указанный файл темы (сначала проверят файл в дочерней теме, если она есть).

Похожа на PHP функцию include, только не нужно указывать путь до темы.

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

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

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

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

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

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

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

Работает на основе: locate_template()
1 раз — 0.000044 сек (очень быстро) | 50000 раз — 0.16 сек (очень быстро) | PHP 7.1.2, WP 4.7.3
Хуки из функции

Возвращает

null|false. null при удачном подключении файла, false если файла шаблона не существует.

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

get_template_part( $slug, $name, $args );
$slug(строка) (обязательный)
Название файла, который нужно подключить.
$name(строка)
Дополнительное название файла. Тоже самое, что параметр $name в функциях get_footer(), get_header() и т.п.
По умолчанию: null
$args(массив) (с 5.5.0)
Дополнительные параметры для подключаемого файла. Используйте переменную $args в подключаемом файле.
По умолчанию: array()

Примеры

2

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

$params = [ 'param1' => 'hello', 'param2' => [ 1, 2 ] ];

get_template_part( 'inc/nav-single', null, $params );

Теперь в файле inc/nav-single.php указанные параметры находятся в переменной $args. Пример кода такого файла:

<?php

echo $args['param1']; // выведет hello
1

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

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

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

#3 Подключение навигации в шаблон с использованием файла 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) ?>
0

#4 Файл из подпапок

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

get_template_part( 'inc/nav' ); // подключит файл inc/nav.php

А если нужно подключить файл inc/nav-single.php, то:

get_template_part( 'inc/nav-single' );
// будет проверяться файл inc/nav-single.php

// или

get_template_part( 'inc/nav', 'single' );
// сначала будет проверяться файл inc/nav-single.php
// если его не существует то inc/nav.php.

Список изменений

С версии 3.0.0 Введена.
С версии 5.5.0 A return value was added.
С версии 5.5.0 The $args parameter was added.

Код get_template_part() WP 6.4.3

function get_template_part( $slug, $name = null, $args = array() ) {
	/**
	 * 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
	 * @since 5.5.0 The `$args` parameter was added.
	 *
	 * @param string      $slug The slug name for the generic template.
	 * @param string|null $name The name of the specialized template or null if
	 *                          there is none.
	 * @param array       $args Additional arguments passed to the template.
	 */
	do_action( "get_template_part_{$slug}", $slug, $name, $args );

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

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

	/**
	 * Fires before an attempt is made to locate and load a template part.
	 *
	 * @since 5.2.0
	 * @since 5.5.0 The `$args` parameter was added.
	 *
	 * @param string   $slug      The slug name for the generic template.
	 * @param string   $name      The name of the specialized template or an empty
	 *                            string if there is none.
	 * @param string[] $templates Array of template files to search for, in order.
	 * @param array    $args      Additional arguments passed to the template.
	 */
	do_action( 'get_template_part', $slug, $name, $templates, $args );

	if ( ! locate_template( $templates, true, false, $args ) ) {
		return false;
	}
}
27 комментариев
Полезные 4 Все
    Войти