get_template_directory

The timeline below displays how wordpress function get_template_directory has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 4.2

/**
 * 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.
 * @since 6.4.1 Memoization removed.
 *
 * @return string Path to active theme's template directory.
 */
function get_template_directory()
{
    $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.
     */
    return apply_filters('template_directory', $template_dir, $template, $theme_root);
}

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

WordPress Version: 6.1

/**
 * Retrieves template directory path for the active theme.
 *
 * @since 1.5.0
 *
 * @return string Path to active theme's template directory.
 */
function get_template_directory()
{
    $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.
     */
    return apply_filters('template_directory', $template_dir, $template, $theme_root);
}

WordPress Version: 5.5

/**
 * Retrieves template directory path for current theme.
 *
 * @since 1.5.0
 *
 * @return string Path to current theme's template directory.
 */
function get_template_directory()
{
    $template = get_template();
    $theme_root = get_theme_root($template);
    $template_dir = "{$theme_root}/{$template}";
    /**
     * Filters the current theme directory path.
     *
     * @since 1.5.0
     *
     * @param string $template_dir The path of the current theme directory.
     * @param string $template     Directory name of the current theme.
     * @param string $theme_root   Absolute path to the themes directory.
     */
    return apply_filters('template_directory', $template_dir, $template, $theme_root);
}

WordPress Version: 4.6

/**
 * Retrieve current theme directory.
 *
 * @since 1.5.0
 *
 * @return string Template directory path.
 */
function get_template_directory()
{
    $template = get_template();
    $theme_root = get_theme_root($template);
    $template_dir = "{$theme_root}/{$template}";
    /**
     * Filters the current theme directory path.
     *
     * @since 1.5.0
     *
     * @param string $template_dir The URI of the current theme directory.
     * @param string $template     Directory name of the current theme.
     * @param string $theme_root   Absolute path to the themes directory.
     */
    return apply_filters('template_directory', $template_dir, $template, $theme_root);
}

WordPress Version: 3.8

/**
 * Retrieve current theme directory.
 *
 * @since 1.5.0
 *
 * @return string Template directory path.
 */
function get_template_directory()
{
    $template = get_template();
    $theme_root = get_theme_root($template);
    $template_dir = "{$theme_root}/{$template}";
    /**
     * Filter the current theme directory path.
     *
     * @since 1.5.0
     *
     * @param string $template_dir The URI of the current theme directory.
     * @param string $template     Directory name of the current theme.
     * @param string $theme_root   Absolute path to the themes directory.
     */
    return apply_filters('template_directory', $template_dir, $template, $theme_root);
}

WordPress Version: 3.7

/**
 * Retrieve current theme directory.
 *
 * @since 1.5.0
 * @uses apply_filters() Calls 'template_directory' filter on template directory path and template name.
 *
 * @return string Template directory path.
 */
function get_template_directory()
{
    $template = get_template();
    $theme_root = get_theme_root($template);
    $template_dir = "{$theme_root}/{$template}";
    return apply_filters('template_directory', $template_dir, $template, $theme_root);
}