Automattic\WooCommerce\EmailEditor\Integrations\WooCommerce\Renderer\Blocks
Product_Collection::render_product_content
Render default product content when no inner blocks are present.
Метод класса: Product_Collection{}
Хуков нет.
Возвращает
Строку.
Использование
// private - только в коде основоного (родительского) класса $result = $this->render_product_content( ?\WC_Product $product, $template_block, $collection_type ): string;
- ?\WC_Product $product(обязательный)
- .
- $template_block(массив) (обязательный)
- Inner block data.
- $collection_type(строка) (обязательный)
- Collection type identifier.
Код Product_Collection::render_product_content() Product Collection::render product content WC 10.4.3
private function render_product_content( ?\WC_Product $product, array $template_block, string $collection_type ): string {
$content = '';
if ( ! $product ) {
return $content;
}
foreach ( $template_block['innerBlocks'] as $inner_block ) {
switch ( $inner_block['blockName'] ) {
case 'woocommerce/product-price':
case 'woocommerce/product-button':
case 'woocommerce/product-sale-badge':
case 'woocommerce/product-image':
$inner_block['context'] = $inner_block['context'] ?? array();
$inner_block['context']['postId'] = $product->get_id();
$inner_block['context']['collection'] = $collection_type;
$content .= render_block( $inner_block );
break;
case 'core/post-title':
global $post;
$original_post = $post;
$original_global_product = $GLOBALS['product'] ?? null;
$product_post = get_post( $product->get_id() );
$post = $product_post; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
$GLOBALS['product'] = $product;
$inner_block['context'] = $inner_block['context'] ?? array();
$inner_block['context']['postId'] = $product->get_id();
$content .= render_block( $inner_block );
$post = $original_post; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
$GLOBALS['product'] = $original_global_product;
break;
default:
break;
}
}
return $content;
}