Automattic\WooCommerce\Blocks\Templates

SingleProductTemplate::update_single_product_content()publicWC 1.0

Add the block template objects to be used.

Method of the class: SingleProductTemplate{}

No Hooks.

Return

Array.

Usage

$SingleProductTemplate = new SingleProductTemplate();
$SingleProductTemplate->update_single_product_content( $query_result );
$query_result(array) (required)
Array of template objects.

SingleProductTemplate::update_single_product_content() code WC 9.4.2

public function update_single_product_content( $query_result ) {
	$query_result = array_map(
		function ( $template ) {
			if ( str_contains( $template->slug, self::SLUG ) ) {
				// We don't want to add the compatibility layer on the Editor Side.
				// The second condition is necessary to not apply the compatibility layer on the REST API. Gutenberg uses the REST API to clone the template.
				// More details: https://github.com/woocommerce/woocommerce-blocks/issues/9662.
				if ( ( ! is_admin() && ! ( defined( 'REST_REQUEST' ) && REST_REQUEST ) ) && ! BlockTemplateUtils::template_has_legacy_template_block( $template ) ) {
					// Add the product class to the body. We should move this to a more appropriate place.
					add_filter(
						'body_class',
						function ( $classes ) {
							return array_merge( $classes, wc_get_product_class() );
						}
					);

					global $product;

					if ( ! $product instanceof \WC_Product ) {
						$product_id = get_the_ID();
						if ( $product_id ) {
							wc_setup_product_data( $product_id );
						}
					}

					if ( post_password_required() ) {
						$template->content = $this->add_password_form( $template->content );
					} else {
						$template->content = SingleProductTemplateCompatibility::add_compatibility_layer( $template->content );
					}
				}
			}
			return $template;
		},
		$query_result
	);
	return $query_result;
}