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

In this article

This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness.

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

VersionDescription
5.9.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.