WordPress как на ладони

get_query_template()WP 1.5.0

Получает путь до указанного файла шаблона. Указывается тип запроса: index, category, 404 и т.д.

Используется для быстрого получения пути файла шаблона, расширение файла при этом указывать не надо. При поиске файла учитывается дочерняя тема (см. locate_template()).

Подробнее о том при каком запросе, какой файл может быть подключен читайте в отдельной статье: Иерархия файлов темы (шаблона)

Эта функция может пригодится при использовании 3 способа создания шаблона страницы.

Работает на основе: locate_template()
Основа для: get_page_template()
1 раз — 0.000085 сек (очень быстро) | 50000 раз — 0.49 сек (очень быстро)

Возвращает

Строку. Серверный путь до файла шаблона. Если файл не удалось найти, то вернет пустую строку.

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

get_query_template( $type, $templates );
$type(строка) (обязательный)

Название файла без расширения (.php).

Название может быть любым, но оно должно содержать только: строчные буквы лат.алфавита, цифры и - ([^a-z0-9-]) - знак _ удаляется.

Предустановленные типы файлов (смотрите иерархию файлов):

  • index
  • 404
  • archive ( сюда входит post_type_archive )
  • author
  • category
  • tag
  • taxonomy
  • date
  • home
  • embed
  • frontpage ( не front_page )
  • page
  • paged
  • search
  • single
  • singular
  • attachment
$templates(массив)

Необязательный список кандидатов на файл шаблона (указывается название файла с расширением).

Если указать этот параметр, то предыдущий параметр $type будет проигнорирован и он будет использоваться только в фильтре. А название файла будет подбираться на основе этого параметра, с помощью функции locate_template().

По умолчанию: array()

Примеры

0

#1 Подключим файл шаблона 404

if ( get_query_template( '404' ) )
	   include( get_query_template( '404' ) );

// тоже самое можно записать так:
if ( get_404_template() )
	include( get_404_template() );
0

#2 Что выводит функция

echo get_query_template( 'category' );
// получим: /home/public_html/wp-content/themes/theme-name/category.php

// можно указать произвольное название и если такой файл есть 
// в родительской/дочерней теме то функция вернет его путь:
echo get_query_template( 'foo' );
// получим: /home/public_html/wp-content/themes/theme-name/foo.php
0

#3 Попробуем получить один из файлов шаблона

Указав второй параметр мы одновременно используем функцию locate_template() и указываем тип получаемого файла, к которому могут подключаться плагины через фильтр:

echo get_query_template( 'category', array('mycat.php','mycat2.php') );

/* получим:
/home/public_html/wp-content/themes/theme-name/mycat.php
если такого файла нет, будет проверен файл 'mycat2.php'
/home/public_html/wp-content/themes/theme-name/mycat2.php
*/

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

С версии 1.5.0 Введена.

Код get_query_template() WP 6.5.2

function get_query_template( $type, $templates = array() ) {
	$type = preg_replace( '|[^a-z0-9-]+|', '', $type );

	if ( empty( $templates ) ) {
		$templates = array( "{$type}.php" );
	}

	/**
	 * Filters the list of template filenames that are searched for when retrieving a template to use.
	 *
	 * The dynamic portion of the hook name, `$type`, refers to the filename -- minus the file
	 * extension and any non-alphanumeric characters delimiting words -- of the file to load.
	 * The last element in the array should always be the fallback template for this query type.
	 *
	 * Possible hook names include:
	 *
	 *  - `404_template_hierarchy`
	 *  - `archive_template_hierarchy`
	 *  - `attachment_template_hierarchy`
	 *  - `author_template_hierarchy`
	 *  - `category_template_hierarchy`
	 *  - `date_template_hierarchy`
	 *  - `embed_template_hierarchy`
	 *  - `frontpage_template_hierarchy`
	 *  - `home_template_hierarchy`
	 *  - `index_template_hierarchy`
	 *  - `page_template_hierarchy`
	 *  - `paged_template_hierarchy`
	 *  - `privacypolicy_template_hierarchy`
	 *  - `search_template_hierarchy`
	 *  - `single_template_hierarchy`
	 *  - `singular_template_hierarchy`
	 *  - `tag_template_hierarchy`
	 *  - `taxonomy_template_hierarchy`
	 *
	 * @since 4.7.0
	 *
	 * @param string[] $templates A list of template candidates, in descending order of priority.
	 */
	$templates = apply_filters( "{$type}_template_hierarchy", $templates );

	$template = locate_template( $templates );

	$template = locate_block_template( $template, $type, $templates );

	/**
	 * Filters the path of the queried template by type.
	 *
	 * The dynamic portion of the hook name, `$type`, refers to the filename -- minus the file
	 * extension and any non-alphanumeric characters delimiting words -- of the file to load.
	 * This hook also applies to various types of files loaded as part of the Template Hierarchy.
	 *
	 * Possible hook names include:
	 *
	 *  - `404_template`
	 *  - `archive_template`
	 *  - `attachment_template`
	 *  - `author_template`
	 *  - `category_template`
	 *  - `date_template`
	 *  - `embed_template`
	 *  - `frontpage_template`
	 *  - `home_template`
	 *  - `index_template`
	 *  - `page_template`
	 *  - `paged_template`
	 *  - `privacypolicy_template`
	 *  - `search_template`
	 *  - `single_template`
	 *  - `singular_template`
	 *  - `tag_template`
	 *  - `taxonomy_template`
	 *
	 * @since 1.5.0
	 * @since 4.8.0 The `$type` and `$templates` parameters were added.
	 *
	 * @param string   $template  Path to the template. See locate_template().
	 * @param string   $type      Sanitized filename without extension.
	 * @param string[] $templates A list of template candidates, in descending order of priority.
	 */
	return apply_filters( "{$type}_template", $template, $type, $templates );
}
2 комментария
    Войти