Automattic\WooCommerce\Blocks\BlockTypes

ProductDescription::renderprotectedWC 1.0

Render the block.

Method of the class: ProductDescription{}

Hooks from the method

Returns

String. Rendered block output.

Usage

// protected - for code of main (parent) or child class
$result = $this->render( $attributes, $content, $block );
$attributes(array) (required)
Block attributes.
$content(string) (required)
Block content.
$block(WP_Block) (required)
Block instance.

ProductDescription::render() code WC 10.7.0

protected function render( $attributes, $content, $block ) {
	// Check if we have a product ID in context.
	if ( ! isset( $block->context['postId'] ) ) {
		return '';
	}

	$product_id = $block->context['postId'];

	// Prevent recursive rendering.
	if ( isset( self::$seen_ids[ $product_id ] ) ) {
		if ( defined( 'WP_DEBUG' ) && WP_DEBUG && defined( 'WP_DEBUG_DISPLAY' ) && WP_DEBUG_DISPLAY ) {
			return __( '[product description rendering halted]', 'woocommerce' );
		}
		return '';
	}

	self::$seen_ids[ $product_id ] = true;

	// Get the product.
	$product = wc_get_product( $product_id );
	if ( ! $product ) {
		unset( self::$seen_ids[ $product_id ] );
		return '';
	}

	// Get the description content.
	$description = $product->get_description();
	/**
	 * This filter is documented in wp-includes/post-template.php.
	 * We follow core/content block to replace ]]> with ]>
	 */
	// phpcs:ignore WooCommerce.Commenting.CommentHooks.MissingHookComment
	$description = apply_filters( 'the_content', str_replace( ']]>', ']]>', $description ) );
	if ( empty( $description ) ) {
		unset( self::$seen_ids[ $product_id ] );
		return '';
	}

	// Remove this product from the seen array.
	unset( self::$seen_ids[ $product_id ] );

	// Add wrapper with block attributes.
	$wrapper_attributes = get_block_wrapper_attributes(
		array( 'class' => 'wc-block-product-description' )
	);

	return sprintf(
		'<div %1$s>%2$s</div>',
		$wrapper_attributes,
		$description
	);
}