WordPress.org

Ready to get started?Download WordPress

Codex

Attention Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

Function Reference/get template part

Description

Load a template part into a template (other than header, sidebar, footer). Makes it easy for a theme to reuse sections of code and an easy way for child themes to replace sections of their parent theme.

Includes the named template part for a theme or if a name is specified then a specialized part will be included. If the theme contains no {slug}.php file then no template will be included.

For the parameter, the template file is to be called "{slug}-{name}.php".

Usage

 <?php get_template_part$slug ); ?>   <?php get_template_part$slug$name ); ?> 

get_template_part doesn't return a value and doesn't warn if it fails to find a matching template file.

If you want to hear about failures, use:

   <?php assert( "locate_template( array('$name-$slug.php', '$name.php'), true, false )" ); ?>

Parameters

$slug
(string) (required) The slug name for the generic template.
Default: None
$name
(string) (optional) The name of the specialized template.
Default: None

Examples

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 --

<?php get_template_part( 'loop', 'index' ); ?>

will do a PHP require() for the first file that exists among these, in this priority:

  1. wp-content/themes/twentytenchild/loop-index.php
  2. wp-content/themes/twentyten/loop-index.php
  3. wp-content/themes/twentytenchild/loop.php
  4. wp-content/themes/twentyten/loop.php

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:

<?php get_template_part( 'partials/content', 'page' ); ?>

Navigation

Adding a navigation bar to theme using a generic nav.php template file:

<?php get_template_part( 'nav' );           // Navigation bar (nav.php) ?>
<?php get_template_part( 'nav', '2' );      // Navigation bar #2 (nav-2.php) ?>
<?php get_template_part( 'nav', 'single' ); // Navigation bar to use in single pages (nav-single.php) ?>

Notes

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_Qery 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.

// You wish to make $my_var available to the template part at `content-part.php`
set_query_var( 'my_var', $my_var );
get_template_part( 'content', 'part' );


Change Log

Source File

get_template_part() is located in wp-includes/general-template.php.

External Resources

Related

Include Tags

See also index of Function Reference and index of Template Tags.