WordPress Version: 6.4
/**
* Retrieves template directory path for the active theme.
*
* @since 1.5.0
* @since 6.4.0 Memoizes filter execution so that it only runs once for the current theme.
*
* @global string $wp_template_path Current theme template directory path.
*
* @return string Path to active theme's template directory.
*/
function get_template_directory()
{
global $wp_template_path;
if (null === $wp_template_path) {
$template = get_template();
$theme_root = get_theme_root($template);
$template_dir = "{$theme_root}/{$template}";
/**
* Filters the active theme directory path.
*
* @since 1.5.0
*
* @param string $template_dir The path of the active theme directory.
* @param string $template Directory name of the active theme.
* @param string $theme_root Absolute path to the themes directory.
*/
$template_dir = apply_filters('template_directory', $template_dir, $template, $theme_root);
// If there are filter callbacks, force the logic to execute on every call.
if (has_filter('template') || has_filter('theme_root') || has_filter('template_directory')) {
return $template_dir;
}
$wp_template_path = $template_dir;
}
return $wp_template_path;
}