get_block_template() – Retrieves a single unified template object using its id.

You appear to be a bot. Output may be restricted

Description

Retrieves a single unified template object using its id.

Usage

$WP_Block_Template|null = get_block_template( $id, $template_type );

Parameters

$id
( string ) required – Template unique identifier (example: theme_slug//template_slug).
$template_type
( string ) optional default: wp_template – Optional. Template type: 'wp_template' or '`wp_template_part'`. Default `'wp_template'`.

Returns

WP_Block_Template|null Template.

Source

File name: wordpress/wp-includes/block-template-utils.php
Lines:

1 to 61 of 61
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 );
}
 

 View on GitHub View on Trac