Automattic\WooCommerce\Blocks\BlockTypes
ProductDetails::register_hooked_block
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() 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
);
}