get_block_template

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

WordPress Version: 6.5

/**
 * Retrieves a single unified template object using its id.
 *
 * @since 5.8.0
 *
 * @param string $id            Template unique identifier (example: 'theme_slug//template_slug').
 * @param string $template_type Optional. Template type. Either 'wp_template' or 'wp_template_part'.
 *                              Default 'wp_template'.
 * @return WP_Block_Template|null Template.
 */
function get_block_template($id, $template_type = 'wp_template')
{
    /**
     * Filters the block template object before the query takes place.
     *
     * Return a non-null value to bypass the WordPress queries.
     *
     * @since 5.9.0
     *
     * @param WP_Block_Template|null $block_template Return block template object to short-circuit the default query,
     *                                               or null to allow WP to run its normal queries.
     * @param string                 $id             Template unique identifier (example: 'theme_slug//template_slug').
     * @param string                 $template_type  Template type. Either 'wp_template' or 'wp_template_part'.
     */
    $block_template = apply_filters('pre_get_block_template', null, $id, $template_type);
    if (!is_null($block_template)) {
        return $block_template;
    }
    $parts = explode('//', $id, 2);
    if (count($parts) < 2) {
        return null;
    }
    list($theme, $slug) = $parts;
    $wp_query_args = array('post_name__in' => array($slug), 'post_type' => $template_type, 'post_status' => array('auto-draft', 'draft', 'publish', 'trash'), 'posts_per_page' => 1, 'no_found_rows' => true, 'tax_query' => array(array('taxonomy' => 'wp_theme', 'field' => 'name', 'terms' => $theme)));
    $template_query = new WP_Query($wp_query_args);
    $posts = $template_query->posts;
    if (count($posts) > 0) {
        $template = _build_block_template_result_from_post($posts[0]);
        if (!is_wp_error($template)) {
            return $template;
        }
    }
    $block_template = get_block_file_template($id, $template_type);
    /**
     * Filters the queried block template object after it's been fetched.
     *
     * @since 5.9.0
     *
     * @param WP_Block_Template|null $block_template The found block template, or null if there isn't one.
     * @param string                 $id             Template unique identifier (example: 'theme_slug//template_slug').
     * @param string                 $template_type  Template type. Either 'wp_template' or 'wp_template_part'.
     */
    return apply_filters('get_block_template', $block_template, $id, $template_type);
}

WordPress Version: 6.3

/**
 * Retrieves a single unified template object using its id.
 *
 * @since 5.8.0
 *
 * @param string $id            Template unique identifier (example: 'theme_slug//template_slug').
 * @param string $template_type Optional. Template type: 'wp_template' or 'wp_template_part'.
 *                              Default 'wp_template'.
 * @return WP_Block_Template|null Template.
 */
function get_block_template($id, $template_type = 'wp_template')
{
    /**
     * Filters the block template object before the query takes place.
     *
     * Return a non-null value to bypass the WordPress queries.
     *
     * @since 5.9.0
     *
     * @param WP_Block_Template|null $block_template Return block template object to short-circuit the default query,
     *                                               or null to allow WP to run its normal queries.
     * @param string                 $id             Template unique identifier (example: 'theme_slug//template_slug').
     * @param string                 $template_type  Template type: 'wp_template' or 'wp_template_part'.
     */
    $block_template = apply_filters('pre_get_block_template', null, $id, $template_type);
    if (!is_null($block_template)) {
        return $block_template;
    }
    $parts = explode('//', $id, 2);
    if (count($parts) < 2) {
        return null;
    }
    list($theme, $slug) = $parts;
    $wp_query_args = array('post_name__in' => array($slug), 'post_type' => $template_type, 'post_status' => array('auto-draft', 'draft', 'publish', 'trash'), 'posts_per_page' => 1, 'no_found_rows' => true, 'tax_query' => array(array('taxonomy' => 'wp_theme', 'field' => 'name', 'terms' => $theme)));
    $template_query = new WP_Query($wp_query_args);
    $posts = $template_query->posts;
    if (count($posts) > 0) {
        $template = _build_block_template_result_from_post($posts[0]);
        if (!is_wp_error($template)) {
            return $template;
        }
    }
    $block_template = get_block_file_template($id, $template_type);
    /**
     * Filters the queried block template object after it's been fetched.
     *
     * @since 5.9.0
     *
     * @param WP_Block_Template|null $block_template The found block template, or null if there isn't one.
     * @param string                 $id             Template unique identifier (example: 'theme_slug//template_slug').
     * @param array                  $template_type  Template type: 'wp_template' or 'wp_template_part'.
     */
    return apply_filters('get_block_template', $block_template, $id, $template_type);
}

WordPress Version: 6.1

/**
 * Retrieves a single unified template object using its id.
 *
 * @since 5.8.0
 *
 * @param string $id            Template unique identifier (example: theme_slug//template_slug).
 * @param string $template_type Optional. Template type: `'wp_template'` or '`wp_template_part'`.
 *                              Default `'wp_template'`.
 * @return WP_Block_Template|null Template.
 */
function get_block_template($id, $template_type = 'wp_template')
{
    /**
     * Filters the block template object before the query takes place.
     *
     * Return a non-null value to bypass the WordPress queries.
     *
     * @since 5.9.0
     *
     * @param WP_Block_Template|null $block_template Return block template object to short-circuit the default query,
     *                                               or null to allow WP to run its normal queries.
     * @param string                 $id             Template unique identifier (example: theme_slug//template_slug).
     * @param string                 $template_type  Template type: `'wp_template'` or '`wp_template_part'`.
     */
    $block_template = apply_filters('pre_get_block_template', null, $id, $template_type);
    if (!is_null($block_template)) {
        return $block_template;
    }
    $parts = explode('//', $id, 2);
    if (count($parts) < 2) {
        return null;
    }
    list($theme, $slug) = $parts;
    $wp_query_args = array('post_name__in' => array($slug), 'post_type' => $template_type, 'post_status' => array('auto-draft', 'draft', 'publish', 'trash'), 'posts_per_page' => 1, 'no_found_rows' => true, 'tax_query' => array(array('taxonomy' => 'wp_theme', 'field' => 'name', 'terms' => $theme)));
    $template_query = new WP_Query($wp_query_args);
    $posts = $template_query->posts;
    if (count($posts) > 0) {
        $template = _build_block_template_result_from_post($posts[0]);
        if (!is_wp_error($template)) {
            return $template;
        }
    }
    $block_template = get_block_file_template($id, $template_type);
    /**
     * Filters the queried block template object after it's been fetched.
     *
     * @since 5.9.0
     *
     * @param WP_Block_Template|null $block_template The found block template, or null if there isn't one.
     * @param string                 $id             Template unique identifier (example: theme_slug//template_slug).
     * @param array                  $template_type  Template type: `'wp_template'` or '`wp_template_part'`.
     */
    return apply_filters('get_block_template', $block_template, $id, $template_type);
}

WordPress Version: 5.9

/**
 * Retrieves a single unified template object using its id.
 *
 * @since 5.8.0
 *
 * @param string $id            Template unique identifier (example: theme_slug//template_slug).
 * @param string $template_type Optional. Template type: `'wp_template'` or '`wp_template_part'`.
 *                              Default `'wp_template'`.
 *
 * @return WP_Block_Template|null Template.
 */
function get_block_template($id, $template_type = 'wp_template')
{
    /**
     *Filters the block template object before the query takes place.
     *
     * Return a non-null value to bypass the WordPress queries.
     *
     * @since 5.9.0
     *
     * @param WP_Block_Template|null $block_template Return block template object to short-circuit the default query,
     *                                               or null to allow WP to run its normal queries.
     * @param string                 $id             Template unique identifier (example: theme_slug//template_slug).
     * @param string                 $template_type  Template type: `'wp_template'` or '`wp_template_part'`.
     */
    $block_template = apply_filters('pre_get_block_template', null, $id, $template_type);
    if (!is_null($block_template)) {
        return $block_template;
    }
    $parts = explode('//', $id, 2);
    if (count($parts) < 2) {
        return null;
    }
    list($theme, $slug) = $parts;
    $wp_query_args = array('post_name__in' => array($slug), 'post_type' => $template_type, 'post_status' => array('auto-draft', 'draft', 'publish', 'trash'), 'posts_per_page' => 1, 'no_found_rows' => true, 'tax_query' => array(array('taxonomy' => 'wp_theme', 'field' => 'name', 'terms' => $theme)));
    $template_query = new WP_Query($wp_query_args);
    $posts = $template_query->posts;
    if (count($posts) > 0) {
        $template = _build_block_template_result_from_post($posts[0]);
        if (!is_wp_error($template)) {
            return $template;
        }
    }
    $block_template = get_block_file_template($id, $template_type);
    /**
     * Filters the queried block template object after it's been fetched.
     *
     * @since 5.9.0
     *
     * @param WP_Block_Template|null $block_template The found block template, or null if there isn't one.
     * @param string                 $id             Template unique identifier (example: theme_slug//template_slug).
     * @param string                 $template_type  Template type: `'wp_template'` or '`wp_template_part'`.
     */
    return apply_filters('get_block_template', $block_template, $id, $template_type);
}

WordPress Version: 5.8

/**
 * Retrieves a single unified template object using its id.
 *
 * @since 5.8.0
 *
 * @param string $id Template unique identifier (example: theme_slug//template_slug).
 * @param string $template_type wp_template.
 *
 * @return WP_Block_Template|null Template.
 */
function get_block_template($id, $template_type = 'wp_template')
{
    $parts = explode('//', $id, 2);
    if (count($parts) < 2) {
        return null;
    }
    list($theme, $slug) = $parts;
    $wp_query_args = array('post_name__in' => array($slug), 'post_type' => $template_type, 'post_status' => array('auto-draft', 'draft', 'publish', 'trash'), 'posts_per_page' => 1, 'no_found_rows' => true, 'tax_query' => array(array('taxonomy' => 'wp_theme', 'field' => 'name', 'terms' => $theme)));
    $template_query = new WP_Query($wp_query_args);
    $posts = $template_query->posts;
    if (count($posts) > 0) {
        $template = _build_template_result_from_post($posts[0]);
        if (!is_wp_error($template)) {
            return $template;
        }
    }
    return null;
}