get_query_template()
Gets the system path to the template file for the specified request type: index, category, 404, etc.
The function is used within WordPress to find and include the corresponding template (e.g., home.php, single.php, page.php, etc.), based on the type of the current request.
It searches for the template in the child theme, then in the parent theme. See locate_template().
The function does not include the file, but only returns the path to the found template.
Can be used for custom logic for including templates.
Used within core functions such as get_home_template() or get_single_template().
get_query_template() is the basis for functions of the type get_*_template():
- get_index_template()
- get_404_template()
- get_archive_template()
- get_post_type_archive_template()
- get_author_template()
- get_category_template()
- get_tag_template()
- get_taxonomy_template()
- get_date_template()
- get_home_template()
- get_front_page_template()
- get_page_template()
- get_paged_template()
- get_search_template()
- get_single_template()
- get_singular_template()
- get_attachment_template()
- get_comments_popup_template()
For more details on which file can be included for which request, read the separate article: Theme (Template) File Hierarchy
This function may be useful when using 3 ways to create a page template.
Hooks from the function
Returns
String. Server path to the template file. If the file could not be found, it will return an empty string.
Usage
get_query_template( $type, $templates );
- $type(string) (required)
Name of the file without the extension (.php).
The name can be anything, but it must contain only:
lowercase letters of the Latin alphabet,digitsand-([^a-z0-9-]) - the character_is removed.Predefined file types (see file hierarchy):
index404archive(includes post_type_archive)authorcategorytagtaxonomydatehomeembedfrontpage(not front_page)pagepagedsearchsinglesingularattachment
- $templates(array)
Optional list of candidates for the template file (specify the file name with the extension).
If this parameter is specified, the previous parameter $type will be ignored and it will only be used in the filter. The file name will be selected based on this parameter, using the locate_template() function.
Default: array()
Examples
#1 What the function outputs
echo get_query_template( 'category' ); // get: /home/public_html/wp-content/themes/theme-name/category.php // you can specify a custom name and if there is such a file // in the parent/child theme, the function will return its path: echo get_query_template( 'foo' ); // get: /home/public_html/wp-content/themes/theme-name/foo.php
#2 Connect the 404 template file
if ( get_query_template( '404' ) ) {
include( get_query_template( '404' ) );
}
// the same can be written like this:
if ( get_404_template() ) {
include( get_404_template() );
} #3 Let's try to get one of the template files
By specifying the second parameter, we simultaneously use the locate_template() function and specify the type of the resulting file to which plugins can connect through a filter:
echo get_query_template( 'category', [ 'mycat.php', 'mycat2.php' ] ); /* we get: /home/public_html/wp-content/themes/theme-name/mycat.php if there is no such file, the file 'mycat2.php' will be checked /home/public_html/wp-content/themes/theme-name/mycat2.php */
Changelog
| Since 1.5.0 | Introduced. |