_build_block_template_object_from_post_object

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

WordPress Version: 5.3

/**
 * Builds a block template object from a post object.
 *
 * This is a helper function that creates a block template object from a given post object.
 * It is self-sufficient in that it only uses information passed as arguments; it does not
 * query the database for additional information.
 *
 * @since 6.5.3
 * @access private
 *
 * @param WP_Post $post  Template post.
 * @param array   $terms Additional terms to inform the template object.
 * @param array   $meta  Additional meta fields to inform the template object.
 * @return WP_Block_Template|WP_Error Template or error object.
 */
function _build_block_template_object_from_post_object($post, $terms = array(), $meta = array())
{
    if (empty($terms['wp_theme'])) {
        return new WP_Error('template_missing_theme', __('No theme is defined for this template.'));
    }
    $theme = $terms['wp_theme'];
    $default_template_types = get_default_block_template_types();
    $template_file = _get_block_template_file($post->post_type, $post->post_name);
    $has_theme_file = get_stylesheet() === $theme && null !== $template_file;
    $template = new WP_Block_Template();
    $template->wp_id = $post->ID;
    $template->id = $theme . '//' . $post->post_name;
    $template->theme = $theme;
    $template->content = $post->post_content;
    $template->slug = $post->post_name;
    $template->source = 'custom';
    $template->origin = (!empty($meta['origin'])) ? $meta['origin'] : null;
    $template->type = $post->post_type;
    $template->description = $post->post_excerpt;
    $template->title = $post->post_title;
    $template->status = $post->post_status;
    $template->has_theme_file = $has_theme_file;
    $template->is_custom = empty($meta['is_wp_suggestion']);
    $template->author = $post->post_author;
    $template->modified = $post->post_modified;
    if ('wp_template' === $post->post_type && $has_theme_file && isset($template_file['postTypes'])) {
        $template->post_types = $template_file['postTypes'];
    }
    if ('wp_template' === $post->post_type && isset($default_template_types[$template->slug])) {
        $template->is_custom = false;
    }
    if ('wp_template_part' === $post->post_type && isset($terms['wp_template_part_area'])) {
        $template->area = $terms['wp_template_part_area'];
    }
    return $template;
}