wpseek.com
Bazujące na WordPress narzędzie wyszukiwania dla deweloperów i twórców motywów.



_build_block_template_result_from_file › WordPress Function

Od5.9.0
Przestarzałyn/a
_build_block_template_result_from_file ( $template_file, $template_type )
Dostęp:
  • private
Parametry: (2)
  • (array) $template_file Theme file.
    Wymagane: Tak
  • (string) $template_type Template type. Either 'wp_template' or 'wp_template_part'.
    Wymagane: Tak
Powrót:
  • (WP_Block_Template) Template.
Zdefiniowane na:
Codex:
Dziennik zmian:
  • 6.3.0

Builds a unified template object based on a theme file.



Źródło

function _build_block_template_result_from_file( $template_file, $template_type ) {
	$default_template_types = get_default_block_template_types();
	$theme                  = get_stylesheet();

	$template                 = new WP_Block_Template();
	$template->id             = $theme . '//' . $template_file['slug'];
	$template->theme          = $theme;
	$template->content        = file_get_contents( $template_file['path'] );
	$template->slug           = $template_file['slug'];
	$template->source         = 'theme';
	$template->type           = $template_type;
	$template->title          = ! empty( $template_file['title'] ) ? $template_file['title'] : $template_file['slug'];
	$template->status         = 'publish';
	$template->has_theme_file = true;
	$template->is_custom      = true;
	$template->modified       = null;

	if ( 'wp_template' === $template_type && isset( $default_template_types[ $template_file['slug'] ] ) ) {
		$template->description = $default_template_types[ $template_file['slug'] ]['description'];
		$template->title       = $default_template_types[ $template_file['slug'] ]['title'];
		$template->is_custom   = false;
	}

	if ( 'wp_template' === $template_type && isset( $template_file['postTypes'] ) ) {
		$template->post_types = $template_file['postTypes'];
	}

	if ( 'wp_template_part' === $template_type && isset( $template_file['area'] ) ) {
		$template->area = $template_file['area'];
	}

	$before_block_visitor = '_inject_theme_attribute_in_template_part_block';
	$after_block_visitor  = null;
	$hooked_blocks        = get_hooked_blocks();
	if ( ! empty( $hooked_blocks ) || has_filter( 'hooked_block_types' ) ) {
		$before_block_visitor = make_before_block_visitor( $hooked_blocks, $template );
		$after_block_visitor  = make_after_block_visitor( $hooked_blocks, $template );
	}
	$blocks            = parse_blocks( $template->content );
	$template->content = traverse_and_serialize_blocks( $blocks, $before_block_visitor, $after_block_visitor );

	return $template;
}