_build_block_template_result_from_file

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

WordPress Version: 6.5

/**
 * Builds a unified template object based on a theme file.
 *
 * @since 5.9.0
 * @since 6.3.0 Added `modified` property to template objects.
 * @access private
 *
 * @param array  $template_file Theme file.
 * @param string $template_type Template type. Either 'wp_template' or 'wp_template_part'.
 * @return WP_Block_Template Template.
 */
function _build_block_template_result_from_file($template_file, $template_type)
{
    $default_template_types = get_default_block_template_types();
    $theme = get_stylesheet();
    $template = new WP_Block_Template();
    $template->id = $theme . '//' . $template_file['slug'];
    $template->theme = $theme;
    $template->content = file_get_contents($template_file['path']);
    $template->slug = $template_file['slug'];
    $template->source = 'theme';
    $template->type = $template_type;
    $template->title = (!empty($template_file['title'])) ? $template_file['title'] : $template_file['slug'];
    $template->status = 'publish';
    $template->has_theme_file = true;
    $template->is_custom = true;
    $template->modified = null;
    if ('wp_template' === $template_type && isset($default_template_types[$template_file['slug']])) {
        $template->description = $default_template_types[$template_file['slug']]['description'];
        $template->title = $default_template_types[$template_file['slug']]['title'];
        $template->is_custom = false;
    }
    if ('wp_template' === $template_type && isset($template_file['postTypes'])) {
        $template->post_types = $template_file['postTypes'];
    }
    if ('wp_template_part' === $template_type && isset($template_file['area'])) {
        $template->area = $template_file['area'];
    }
    $before_block_visitor = '_inject_theme_attribute_in_template_part_block';
    $after_block_visitor = null;
    $hooked_blocks = get_hooked_blocks();
    if (!empty($hooked_blocks) || has_filter('hooked_block_types')) {
        $before_block_visitor = make_before_block_visitor($hooked_blocks, $template);
        $after_block_visitor = make_after_block_visitor($hooked_blocks, $template);
    }
    $blocks = parse_blocks($template->content);
    $template->content = traverse_and_serialize_blocks($blocks, $before_block_visitor, $after_block_visitor);
    return $template;
}

WordPress Version: 4.2

/**
 * Builds a unified template object based on a theme file.
 *
 * @since 5.9.0
 * @since 6.3.0 Added `modified` property to template objects.
 * @access private
 *
 * @param array  $template_file Theme file.
 * @param string $template_type 'wp_template' or 'wp_template_part'.
 * @return WP_Block_Template Template.
 */
function _build_block_template_result_from_file($template_file, $template_type)
{
    $default_template_types = get_default_block_template_types();
    $theme = get_stylesheet();
    $template = new WP_Block_Template();
    $template->id = $theme . '//' . $template_file['slug'];
    $template->theme = $theme;
    $template->content = file_get_contents($template_file['path']);
    $template->slug = $template_file['slug'];
    $template->source = 'theme';
    $template->type = $template_type;
    $template->title = (!empty($template_file['title'])) ? $template_file['title'] : $template_file['slug'];
    $template->status = 'publish';
    $template->has_theme_file = true;
    $template->is_custom = true;
    $template->modified = null;
    if ('wp_template' === $template_type && isset($default_template_types[$template_file['slug']])) {
        $template->description = $default_template_types[$template_file['slug']]['description'];
        $template->title = $default_template_types[$template_file['slug']]['title'];
        $template->is_custom = false;
    }
    if ('wp_template' === $template_type && isset($template_file['postTypes'])) {
        $template->post_types = $template_file['postTypes'];
    }
    if ('wp_template_part' === $template_type && isset($template_file['area'])) {
        $template->area = $template_file['area'];
    }
    $before_block_visitor = '_inject_theme_attribute_in_template_part_block';
    $after_block_visitor = null;
    $hooked_blocks = get_hooked_blocks();
    if (!empty($hooked_blocks) || has_filter('hooked_block_types')) {
        $before_block_visitor = make_before_block_visitor($hooked_blocks, $template);
        $after_block_visitor = make_after_block_visitor($hooked_blocks, $template);
    }
    $blocks = parse_blocks($template->content);
    $template->content = traverse_and_serialize_blocks($blocks, $before_block_visitor, $after_block_visitor);
    return $template;
}

WordPress Version: 6.4

/**
 * Builds a unified template object based on a theme file.
 *
 * @since 5.9.0
 * @since 6.3.0 Added `modified` property to template objects.
 * @access private
 *
 * @param array  $template_file Theme file.
 * @param string $template_type 'wp_template' or 'wp_template_part'.
 * @return WP_Block_Template Template.
 */
function _build_block_template_result_from_file($template_file, $template_type)
{
    $default_template_types = get_default_block_template_types();
    $template_content = file_get_contents($template_file['path']);
    $theme = get_stylesheet();
    $template = new WP_Block_Template();
    $template->id = $theme . '//' . $template_file['slug'];
    $template->theme = $theme;
    $template->slug = $template_file['slug'];
    $template->source = 'theme';
    $template->type = $template_type;
    $template->title = (!empty($template_file['title'])) ? $template_file['title'] : $template_file['slug'];
    $template->status = 'publish';
    $template->has_theme_file = true;
    $template->is_custom = true;
    $template->modified = null;
    if ('wp_template' === $template_type && isset($default_template_types[$template_file['slug']])) {
        $template->description = $default_template_types[$template_file['slug']]['description'];
        $template->title = $default_template_types[$template_file['slug']]['title'];
        $template->is_custom = false;
    }
    if ('wp_template' === $template_type && isset($template_file['postTypes'])) {
        $template->post_types = $template_file['postTypes'];
    }
    if ('wp_template_part' === $template_type && isset($template_file['area'])) {
        $template->area = $template_file['area'];
    }
    $before_block_visitor = '_inject_theme_attribute_in_template_part_block';
    $after_block_visitor = null;
    $hooked_blocks = get_hooked_blocks();
    if (!empty($hooked_blocks) || has_filter('hooked_block_types')) {
        $before_block_visitor = make_before_block_visitor($hooked_blocks, $template);
        $after_block_visitor = make_after_block_visitor($hooked_blocks, $template);
    }
    $blocks = parse_blocks($template_content);
    $template->content = traverse_and_serialize_blocks($blocks, $before_block_visitor, $after_block_visitor);
    return $template;
}

WordPress Version: 6.3

/**
 * Builds a unified template object based on a theme file.
 *
 * @since 5.9.0
 * @since 6.3.0 Added `modified` property to template objects.
 * @access private
 *
 * @param array  $template_file Theme file.
 * @param string $template_type 'wp_template' or 'wp_template_part'.
 * @return WP_Block_Template Template.
 */
function _build_block_template_result_from_file($template_file, $template_type)
{
    $default_template_types = get_default_block_template_types();
    $template_content = file_get_contents($template_file['path']);
    $theme = get_stylesheet();
    $template = new WP_Block_Template();
    $template->id = $theme . '//' . $template_file['slug'];
    $template->theme = $theme;
    $template->content = _inject_theme_attribute_in_block_template_content($template_content);
    $template->slug = $template_file['slug'];
    $template->source = 'theme';
    $template->type = $template_type;
    $template->title = (!empty($template_file['title'])) ? $template_file['title'] : $template_file['slug'];
    $template->status = 'publish';
    $template->has_theme_file = true;
    $template->is_custom = true;
    $template->modified = null;
    if ('wp_template' === $template_type && isset($default_template_types[$template_file['slug']])) {
        $template->description = $default_template_types[$template_file['slug']]['description'];
        $template->title = $default_template_types[$template_file['slug']]['title'];
        $template->is_custom = false;
    }
    if ('wp_template' === $template_type && isset($template_file['postTypes'])) {
        $template->post_types = $template_file['postTypes'];
    }
    if ('wp_template_part' === $template_type && isset($template_file['area'])) {
        $template->area = $template_file['area'];
    }
    return $template;
}

WordPress Version: 1.1

/**
 * Builds a unified template object based on a theme file.
 *
 * @since 5.9.0
 * @access private
 *
 * @param array  $template_file Theme file.
 * @param string $template_type 'wp_template' or 'wp_template_part'.
 * @return WP_Block_Template Template.
 */
function _build_block_template_result_from_file($template_file, $template_type)
{
    $default_template_types = get_default_block_template_types();
    $template_content = file_get_contents($template_file['path']);
    $theme = get_stylesheet();
    $template = new WP_Block_Template();
    $template->id = $theme . '//' . $template_file['slug'];
    $template->theme = $theme;
    $template->content = _inject_theme_attribute_in_block_template_content($template_content);
    $template->slug = $template_file['slug'];
    $template->source = 'theme';
    $template->type = $template_type;
    $template->title = (!empty($template_file['title'])) ? $template_file['title'] : $template_file['slug'];
    $template->status = 'publish';
    $template->has_theme_file = true;
    $template->is_custom = true;
    if ('wp_template' === $template_type && isset($default_template_types[$template_file['slug']])) {
        $template->description = $default_template_types[$template_file['slug']]['description'];
        $template->title = $default_template_types[$template_file['slug']]['title'];
        $template->is_custom = false;
    }
    if ('wp_template' === $template_type && isset($template_file['postTypes'])) {
        $template->post_types = $template_file['postTypes'];
    }
    if ('wp_template_part' === $template_type && isset($template_file['area'])) {
        $template->area = $template_file['area'];
    }
    return $template;
}

WordPress Version: 6.1

/**
 * Builds a unified template object based on a theme file.
 *
 * @since 5.9.0
 * @access private
 *
 * @param array  $template_file Theme file.
 * @param string $template_type 'wp_template' or 'wp_template_part'.
 * @return WP_Block_Template Template.
 */
function _build_block_template_result_from_file($template_file, $template_type)
{
    $default_template_types = get_default_block_template_types();
    $template_content = file_get_contents($template_file['path']);
    $theme = wp_get_theme()->get_stylesheet();
    $template = new WP_Block_Template();
    $template->id = $theme . '//' . $template_file['slug'];
    $template->theme = $theme;
    $template->content = _inject_theme_attribute_in_block_template_content($template_content);
    $template->slug = $template_file['slug'];
    $template->source = 'theme';
    $template->type = $template_type;
    $template->title = (!empty($template_file['title'])) ? $template_file['title'] : $template_file['slug'];
    $template->status = 'publish';
    $template->has_theme_file = true;
    $template->is_custom = true;
    if ('wp_template' === $template_type && isset($default_template_types[$template_file['slug']])) {
        $template->description = $default_template_types[$template_file['slug']]['description'];
        $template->title = $default_template_types[$template_file['slug']]['title'];
        $template->is_custom = false;
    }
    if ('wp_template' === $template_type && isset($template_file['postTypes'])) {
        $template->post_types = $template_file['postTypes'];
    }
    if ('wp_template_part' === $template_type && isset($template_file['area'])) {
        $template->area = $template_file['area'];
    }
    return $template;
}

WordPress Version: 5.9

/**
 * Build a unified template object based on a theme file.
 *
 * @since 5.9.0
 * @access private
 *
 * @param array  $template_file Theme file.
 * @param string $template_type 'wp_template' or 'wp_template_part'.
 *
 * @return WP_Block_Template Template.
 */
function _build_block_template_result_from_file($template_file, $template_type)
{
    $default_template_types = get_default_block_template_types();
    $template_content = file_get_contents($template_file['path']);
    $theme = wp_get_theme()->get_stylesheet();
    $template = new WP_Block_Template();
    $template->id = $theme . '//' . $template_file['slug'];
    $template->theme = $theme;
    $template->content = _inject_theme_attribute_in_block_template_content($template_content);
    $template->slug = $template_file['slug'];
    $template->source = 'theme';
    $template->type = $template_type;
    $template->title = (!empty($template_file['title'])) ? $template_file['title'] : $template_file['slug'];
    $template->status = 'publish';
    $template->has_theme_file = true;
    $template->is_custom = true;
    if ('wp_template' === $template_type && isset($default_template_types[$template_file['slug']])) {
        $template->description = $default_template_types[$template_file['slug']]['description'];
        $template->title = $default_template_types[$template_file['slug']]['title'];
        $template->is_custom = false;
    }
    if ('wp_template' === $template_type && isset($template_file['postTypes'])) {
        $template->post_types = $template_file['postTypes'];
    }
    if ('wp_template_part' === $template_type && isset($template_file['area'])) {
        $template->area = $template_file['area'];
    }
    return $template;
}