Automattic\WooCommerce\Blocks\BlockTypes
ProductDetails::inject_compatible_tabs
Inject compatible tabs.
Method of the class: ProductDetails{}
Hooks from the method
Returns
Array. Parsed block.
Usage
// private - for code of main (parent) class only $result = $this->inject_compatible_tabs( $parsed_block );
- $parsed_block(array) (required)
- Parsed block.
ProductDetails::inject_compatible_tabs() ProductDetails::inject compatible tabs code WC 10.7.0
private function inject_compatible_tabs( $parsed_block ) {
if ( ! $this->has_accordion( $parsed_block ) ) {
return $parsed_block;
}
/**
* Filter the product tabs in the product details block.
*
* @since 3.3.0
* @param array $tabs Array of product tabs.
*/
$product_tabs = apply_filters(
'woocommerce_product_tabs',
array()
);
$default_tabs_callbacks = array(
'woocommerce_product_description_tab',
'woocommerce_product_additional_information_tab',
'comments_template',
);
$product_tabs = array_filter(
$product_tabs,
function ( $tab ) use ( $default_tabs_callbacks ) {
return ! in_array( $tab['callback'], $default_tabs_callbacks, true );
}
);
usort(
$product_tabs,
function ( $a, $b ) {
return $a['priority'] <=> $b['priority'];
}
);
$accordion_blocks = array();
$accordion_anchor_block = $this->get_accordion_anchor_block( $parsed_block );
if ( ! $accordion_anchor_block ) {
return $parsed_block;
}
foreach ( $product_tabs as $key => $tab ) {
ob_start();
call_user_func( $tab['callback'], $key, $tab );
$tab_content = ob_get_clean();
$accordion_blocks[] = $this->create_accordion_item_block(
$tab['title'],
'<!-- wp:html -->' . $tab_content . '<!-- /wp:html -->',
$accordion_anchor_block
);
}
return $this->inject_parsed_accordion_blocks( $parsed_block, $accordion_blocks );
}