Automattic\WooCommerce\Blocks\BlockTypes

ProductDetails::register_hooked_blockprivateWC 1.0

Register a product details item using Block Hooks API.

Метод класса: ProductDetails{}

Хуков нет.

Возвращает

null. Ничего (null).

Использование

// private - только в коде основоного (родительского) класса
$result = $this->register_hooked_block( $slug, $block );
$slug(строка) (обязательный)
The slug of the item.
$block(массив) (обязательный)
The block data.

Код ProductDetails::register_hooked_block() WC 10.8.1

private function register_hooked_block( $slug, $block ) {
	add_filter(
		'hooked_block_types',
		function ( $hooked_block_types, $relative_position, $anchor_block_type ) use ( $slug ) {
			if (
				( 'core/accordion' === $anchor_block_type || 'woocommerce/accordion-group' === $anchor_block_type ) &&
				'last_child' === $relative_position &&
				! in_array( $slug, $hooked_block_types, true )
			) {
				$hooked_block_types[] = $slug;
			}
			return $hooked_block_types;
		},
		10,
		3
	);

	add_filter(
		"hooked_block_{$slug}",
		function ( $parsed_hooked_block, $hooked_block_type, $relative_position, $parsed_anchor_block ) use ( $block ) {
			if (
				is_null( $parsed_hooked_block ) ||
				( 'core/accordion' !== $parsed_anchor_block['blockName'] && 'woocommerce/accordion-group' !== $parsed_anchor_block['blockName'] ) ||
				'last_child' !== $relative_position ||
				empty( $parsed_anchor_block['attrs']['metadata']['isDescendantOfProductDetails'] )
			) {
				return null;
			}

			return $this->create_accordion_item_block( $block['title'], $block['content'], $parsed_anchor_block );
		},
		10,
		4
	);
}