_get_block_template_file

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

WordPress Version: 6.5

/**
 * Retrieves the template file from the theme for a given slug.
 *
 * @since 5.9.0
 * @access private
 *
 * @param string $template_type Template type. Either 'wp_template' or 'wp_template_part'.
 * @param string $slug          Template slug.
 * @return array|null {
 *    Array with template metadata if $template_type is one of 'wp_template' or 'wp_template_part',
 *    null otherwise.
 *
 *    @type string   $slug      Template slug.
 *    @type string   $path      Template file path.
 *    @type string   $theme     Theme slug.
 *    @type string   $type      Template type.
 *    @type string   $area      Template area. Only for 'wp_template_part'.
 *    @type string   $title     Optional. Template title.
 *    @type string[] $postTypes Optional. List of post types that the template supports. Only for 'wp_template'.
 * }
 */
function _get_block_template_file($template_type, $slug)
{
    if ('wp_template' !== $template_type && 'wp_template_part' !== $template_type) {
        return null;
    }
    $themes = array(get_stylesheet() => get_stylesheet_directory(), get_template() => get_template_directory());
    foreach ($themes as $theme_slug => $theme_dir) {
        $template_base_paths = get_block_theme_folders($theme_slug);
        $file_path = $theme_dir . '/' . $template_base_paths[$template_type] . '/' . $slug . '.html';
        if (file_exists($file_path)) {
            $new_template_item = array('slug' => $slug, 'path' => $file_path, 'theme' => $theme_slug, 'type' => $template_type);
            if ('wp_template_part' === $template_type) {
                return _add_block_template_part_area_info($new_template_item);
            }
            if ('wp_template' === $template_type) {
                return _add_block_template_info($new_template_item);
            }
            return $new_template_item;
        }
    }
    return null;
}

WordPress Version: 6.3

/**
 * Retrieves the template file from the theme for a given slug.
 *
 * @since 5.9.0
 * @access private
 *
 * @param string $template_type 'wp_template' or 'wp_template_part'.
 * @param string $slug          Template slug.
 * @return array|null {
 *    Array with template metadata if $template_type is one of 'wp_template' or 'wp_template_part'.
 *    null otherwise.
 *
 *    @type string   $slug      Template slug.
 *    @type string   $path      Template file path.
 *    @type string   $theme     Theme slug.
 *    @type string   $type      Template type.
 *    @type string   $area      Template area. Only for 'wp_template_part'.
 *    @type string   $title     Optional. Template title.
 *    @type string[] $postTypes Optional. List of post types that the template supports. Only for 'wp_template'.
 * }
 */
function _get_block_template_file($template_type, $slug)
{
    if ('wp_template' !== $template_type && 'wp_template_part' !== $template_type) {
        return null;
    }
    $themes = array(get_stylesheet() => get_stylesheet_directory(), get_template() => get_template_directory());
    foreach ($themes as $theme_slug => $theme_dir) {
        $template_base_paths = get_block_theme_folders($theme_slug);
        $file_path = $theme_dir . '/' . $template_base_paths[$template_type] . '/' . $slug . '.html';
        if (file_exists($file_path)) {
            $new_template_item = array('slug' => $slug, 'path' => $file_path, 'theme' => $theme_slug, 'type' => $template_type);
            if ('wp_template_part' === $template_type) {
                return _add_block_template_part_area_info($new_template_item);
            }
            if ('wp_template' === $template_type) {
                return _add_block_template_info($new_template_item);
            }
            return $new_template_item;
        }
    }
    return null;
}

WordPress Version: 6.1

/**
 * Retrieves the template file from the theme for a given slug.
 *
 * @since 5.9.0
 * @access private
 *
 * @param string $template_type 'wp_template' or 'wp_template_part'.
 * @param string $slug          Template slug.
 * @return array|null Template.
 */
function _get_block_template_file($template_type, $slug)
{
    if ('wp_template' !== $template_type && 'wp_template_part' !== $template_type) {
        return null;
    }
    $themes = array(get_stylesheet() => get_stylesheet_directory(), get_template() => get_template_directory());
    foreach ($themes as $theme_slug => $theme_dir) {
        $template_base_paths = get_block_theme_folders($theme_slug);
        $file_path = $theme_dir . '/' . $template_base_paths[$template_type] . '/' . $slug . '.html';
        if (file_exists($file_path)) {
            $new_template_item = array('slug' => $slug, 'path' => $file_path, 'theme' => $theme_slug, 'type' => $template_type);
            if ('wp_template_part' === $template_type) {
                return _add_block_template_part_area_info($new_template_item);
            }
            if ('wp_template' === $template_type) {
                return _add_block_template_info($new_template_item);
            }
            return $new_template_item;
        }
    }
    return null;
}

WordPress Version: 5.9

/**
 * Retrieves the template file from the theme for a given slug.
 *
 * @since 5.9.0
 * @access private
 *
 * @param string $template_type 'wp_template' or 'wp_template_part'.
 * @param string $slug          Template slug.
 *
 * @return array|null Template.
 */
function _get_block_template_file($template_type, $slug)
{
    if ('wp_template' !== $template_type && 'wp_template_part' !== $template_type) {
        return null;
    }
    $themes = array(get_stylesheet() => get_stylesheet_directory(), get_template() => get_template_directory());
    foreach ($themes as $theme_slug => $theme_dir) {
        $template_base_paths = get_block_theme_folders($theme_slug);
        $file_path = $theme_dir . '/' . $template_base_paths[$template_type] . '/' . $slug . '.html';
        if (file_exists($file_path)) {
            $new_template_item = array('slug' => $slug, 'path' => $file_path, 'theme' => $theme_slug, 'type' => $template_type);
            if ('wp_template_part' === $template_type) {
                return _add_block_template_part_area_info($new_template_item);
            }
            if ('wp_template' === $template_type) {
                return _add_block_template_info($new_template_item);
            }
            return $new_template_item;
        }
    }
    return null;
}