W3cubDocs

/WordPress

_get_block_template_file( string $template_type, string $slug ): array|null

Retrieves the template file from the theme for a given slug.

Parameters

$template_typestringrequired
Template type. Either 'wp_template' or 'wp_template_part'.
$slugstringrequired
Template slug.

Return

array|null Array with template metadata if $template_type is one of ‘wp_template’ or ‘wp_template_part’, null otherwise.
  • slug string
    Template slug.
  • path string
    Template file path.
  • theme string
    Theme slug.
  • type string
    Template type.
  • area string
    Template area. Only for 'wp_template_part'.
  • title string
    Optional. Template title.
  • postTypes string[]
    Optional. List of post types that the template supports. Only for 'wp_template'.

Source

function _get_block_template_file( $template_type, $slug ) {
	if ( 'wp_template' !== $template_type && 'wp_template_part' !== $template_type ) {
		return null;
	}

	$themes = array(
		get_stylesheet() => get_stylesheet_directory(),
		get_template()   => get_template_directory(),
	);
	foreach ( $themes as $theme_slug => $theme_dir ) {
		$template_base_paths = get_block_theme_folders( $theme_slug );
		$file_path           = $theme_dir . '/' . $template_base_paths[ $template_type ] . '/' . $slug . '.html';
		if ( file_exists( $file_path ) ) {
			$new_template_item = array(
				'slug'  => $slug,
				'path'  => $file_path,
				'theme' => $theme_slug,
				'type'  => $template_type,
			);

			if ( 'wp_template_part' === $template_type ) {
				return _add_block_template_part_area_info( $new_template_item );
			}

			if ( 'wp_template' === $template_type ) {
				return _add_block_template_info( $new_template_item );
			}

			return $new_template_item;
		}
	}

	return null;
}

Changelog

Version Description
5.9.0 Introduced.

© 2003–2024 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/_get_block_template_file