get_template_part( string $slug, string $name = null )
Loads a template part into a template.
Contents
Description Description
Provides a simple mechanism for child themes to overload reusable sections of code in the theme.
Includes the named template part for a theme or if a name is specified then a specialised part will be included. If the theme contains no {slug}.php file then no template will be included.
The template is included using require, not require_once, so you may include the same template part multiple times.
For the $name parameter, if the file is called "{slug}-special.php" then specify "special".
Parameters Parameters
- $slug
-
(string) (Required) The slug name for the generic template.
- $name
-
(string) (Optional) The name of the specialised template.
Default value: null
Source Source
File: wp-includes/general-template.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"; /** * Fires before a template part is loaded. * * @since 5.2.0 * * @param string $slug The slug name for the generic template. * @param string $name The name of the specialized template. * @param string[] $templates Array of template files to search for, in order. */ do_action( 'get_template_part', $slug, $name, $templates ); locate_template( $templates, true, false ); }
Expand full source code Collapse full source code View on Trac
Changelog Changelog
Version | Description |
---|---|
3.0.0 | Introduced. |
More Information More Information
Usage Usage
get_template_part( $slug );
get_template_part( $slug, $name );
Note: get_template_part()
fails silently
User Contributed Notes User Contributed Notes
You must log in before being able to contribute a note or feedback.
Using with theme subfolders
To use this function with subfolders in your theme directory, simply prepend the folder name before the slug. For example, if you have a folder called “partials” in your theme directory and a template part called “content-page.php” in that sub-folder, you would use
get_template_part()
like this:Using loop.php in child themes
Assuming the theme folder is
wp-content/themes
, that the parent theme is twentyten, and the child theme is twentytenchild, then the following code —will do a PHP
require()
for the first file that exists among these, in this priority:wp-content/themes/twentytenchild/loop-index.php
wp-content/themes/twentyten/loop-index.php
wp-content/themes/twentytenchild/loop.php
wp-content/themes/twentyten/loop.php
the old codex had this entry about “Passing Variables to Template”
Because the template is being required, it will not have access to any variables you define within the calling theme’s PHP code, unless you explicitly declare them as global.
However, load_template(), which is called indirectly by get_template_part() extracts all of the WP_Query query variables, into the scope of the loaded template. So you can use set_query_var() to make your variable available to the template part.
Feedback
Minor suggestion, it should rather be ‘Because of where in the code execution the template is being required’. The fact that is is being required vs being included is not the reason one has to use the WP_Query query variables. — By Jonathan Bossenger —
Navigation
Adding a navigation bar to theme using a generic
nav.php
template file:Get a specific file
Although this kind of defeats the purpose of this function, it’s also possible to load a specific template file with it. All you have to do is use just one argument:
will include
layout.php
from template-parts subdirectory placed in the root of your theme folder.