wppaste
WordPress

locate_template( string|array $template_names, bool $load = false, bool $load_once = true, array $args = array() ): string

Since
2.7.0, 5.5.0
Source
wp-includes/template.php:722
Retrieves the name of the highest priority template file that exists.

Description

Searches in the stylesheet directory before the template directory and wp-includes/theme-compat so that themes which inherit from a parent theme can just overload one file.

Parameters

$template_namesstring|array
Template file(s) to search for, in order.
$loadbooloptional
If true the template file will be loaded if it is found.Default: false
$load_oncebooloptional
Whether to require_once or require. Has no effect if $load is false. Default true.Default: true
$argsarrayoptional
Additional arguments passed to the template. Default empty array.Default: array()

Return

string
The template filename if one is located.

Uses · 3

Used by · 8

Source

function locate_template( $template_names, $load = false, $load_once = true, $args = array() ) {	global $wp_stylesheet_path, $wp_template_path; 	if ( ! isset( $wp_stylesheet_path ) || ! isset( $wp_template_path ) ) {		wp_set_template_globals();	} 	$is_child_theme = is_child_theme(); 	$located = '';	foreach ( (array) $template_names as $template_name ) {		if ( ! $template_name ) {			continue;		}		if ( file_exists( $wp_stylesheet_path . '/' . $template_name ) ) {			$located = $wp_stylesheet_path . '/' . $template_name;			break;		} elseif ( $is_child_theme && file_exists( $wp_template_path . '/' . $template_name ) ) {			$located = $wp_template_path . '/' . $template_name;			break;		} elseif ( file_exists( ABSPATH . WPINC . '/theme-compat/' . $template_name ) ) {			$located = ABSPATH . WPINC . '/theme-compat/' . $template_name;			break;		}	} 	if ( $load && '' !== $located ) {		load_template( $located, $load_once, $args );	} 	return $located;}

History

Introduced in 2.7.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

5.5.0
The $args parameter was added.from the docblock
2.7.0
Introduced.from the docblock

About this page

Parsed data
Generated from the wordpress-develop 7.0.4 tag, from src/wp-includes/template.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.