get_block_file_template

The timeline below displays how wordpress function get_block_file_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 unified template object based on a theme file.
 *
 * This is a fallback of get_block_template(), used when no templates are found in the database.
 *
 * @since 5.9.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 The found block template, or null if there isn't one.
 */
function get_block_file_template($id, $template_type = 'wp_template')
{
    /**
     * Filters the block template object before the theme file discovery takes place.
     *
     * Return a non-null value to bypass the WordPress theme file discovery.
     *
     * @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_file_template', null, $id, $template_type);
    if (!is_null($block_template)) {
        return $block_template;
    }
    $parts = explode('//', $id, 2);
    if (count($parts) < 2) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    list($theme, $slug) = $parts;
    if (get_stylesheet() !== $theme) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    $template_file = _get_block_template_file($template_type, $slug);
    if (null === $template_file) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    $block_template = _build_block_template_result_from_file($template_file, $template_type);
    /**
     * Filters the block template object after it has been (potentially) fetched from the theme file.
     *
     * @since 5.9.0
     *
     * @param WP_Block_Template|null $block_template The found block template, or null if there is none.
     * @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_file_template', $block_template, $id, $template_type);
}

WordPress Version: 6.3

/**
 * Retrieves a unified template object based on a theme file.
 *
 * This is a fallback of get_block_template(), used when no templates are found in the database.
 *
 * @since 5.9.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 The found block template, or null if there isn't one.
 */
function get_block_file_template($id, $template_type = 'wp_template')
{
    /**
     * Filters the block template object before the theme file discovery takes place.
     *
     * Return a non-null value to bypass the WordPress theme file discovery.
     *
     * @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_file_template', null, $id, $template_type);
    if (!is_null($block_template)) {
        return $block_template;
    }
    $parts = explode('//', $id, 2);
    if (count($parts) < 2) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    list($theme, $slug) = $parts;
    if (get_stylesheet() !== $theme) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    $template_file = _get_block_template_file($template_type, $slug);
    if (null === $template_file) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    $block_template = _build_block_template_result_from_file($template_file, $template_type);
    /**
     * Filters the block template object after it has been (potentially) fetched from the theme file.
     *
     * @since 5.9.0
     *
     * @param WP_Block_Template|null $block_template The found block template, or null if there is none.
     * @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_file_template', $block_template, $id, $template_type);
}

WordPress Version: 1.1

/**
 * Retrieves a unified template object based on a theme file.
 *
 * This is a fallback of get_block_template(), used when no templates are found in the database.
 *
 * @since 5.9.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 The found block template, or null if there isn't one.
 */
function get_block_file_template($id, $template_type = 'wp_template')
{
    /**
     * Filters the block template object before the theme file discovery takes place.
     *
     * Return a non-null value to bypass the WordPress theme file discovery.
     *
     * @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_file_template', null, $id, $template_type);
    if (!is_null($block_template)) {
        return $block_template;
    }
    $parts = explode('//', $id, 2);
    if (count($parts) < 2) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    list($theme, $slug) = $parts;
    if (get_stylesheet() !== $theme) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    $template_file = _get_block_template_file($template_type, $slug);
    if (null === $template_file) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    $block_template = _build_block_template_result_from_file($template_file, $template_type);
    /**
     * Filters the block template object after it has been (potentially) fetched from the theme file.
     *
     * @since 5.9.0
     *
     * @param WP_Block_Template|null $block_template The found block template, or null if there is none.
     * @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_file_template', $block_template, $id, $template_type);
}

WordPress Version: 6.1

/**
 * Retrieves a unified template object based on a theme file.
 *
 * This is a fallback of get_block_template(), used when no templates are found in the database.
 *
 * @since 5.9.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 The found block template, or null if there isn't one.
 */
function get_block_file_template($id, $template_type = 'wp_template')
{
    /**
     * Filters the block template object before the theme file discovery takes place.
     *
     * Return a non-null value to bypass the WordPress theme file discovery.
     *
     * @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_file_template', null, $id, $template_type);
    if (!is_null($block_template)) {
        return $block_template;
    }
    $parts = explode('//', $id, 2);
    if (count($parts) < 2) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    list($theme, $slug) = $parts;
    if (wp_get_theme()->get_stylesheet() !== $theme) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    $template_file = _get_block_template_file($template_type, $slug);
    if (null === $template_file) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    $block_template = _build_block_template_result_from_file($template_file, $template_type);
    /**
     * Filters the block template object after it has been (potentially) fetched from the theme file.
     *
     * @since 5.9.0
     *
     * @param WP_Block_Template|null $block_template The found block template, or null if there is none.
     * @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_file_template', $block_template, $id, $template_type);
}

WordPress Version: 5.9

/**
 * Retrieves a single unified template object using its id.
 *
 * @since 5.9.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 The found block template, or null if there isn't one.
 */
function get_block_file_template($id, $template_type = 'wp_template')
{
    /**
     * Filters the block templates array 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_file_template', null, $id, $template_type);
    if (!is_null($block_template)) {
        return $block_template;
    }
    $parts = explode('//', $id, 2);
    if (count($parts) < 2) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    list($theme, $slug) = $parts;
    if (wp_get_theme()->get_stylesheet() !== $theme) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    $template_file = _get_block_template_file($template_type, $slug);
    if (null === $template_file) {
        /** This filter is documented in wp-includes/block-template-utils.php */
        return apply_filters('get_block_file_template', null, $id, $template_type);
    }
    $block_template = _build_block_template_result_from_file($template_file, $template_type);
    /**
     * Filters the array of queried block templates array after they've been fetched.
     *
     * @since 5.9.0
     *
     * @param WP_Block_Template|null $block_template The found block template, or null if there is none.
     * @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_file_template', $block_template, $id, $template_type);
}