I've just added a custom product type option to my WC admin products page:
add_filter( 'product_type_options', [ $this, 'filter_product_type_options' ], 99, 1 );
public function filter_product_type_options( array $product_type_options ): array {
$product_type_options['batches'] = [
'id' => '_batches',
'wrapper_class' => 'show_if_simple show_if_variable',
'label' => esc_html__( 'Batches', 'woo-batches' ),
'description' => esc_html__( 'Product is sold from batches.', 'woo-batches' ),
'default' => 'no',
];
return $product_type_options;
}
I've also added a custom product data tab which I only want to show in case the option is checked:
add_filter( 'woocommerce_product_data_tabs', [ $this, 'filter_woocommerce_product_data_tabs' ] );
public function filter_woocommerce_product_data_tabs( array $tabs ): array {
$tabs['woo_batches'] = [
'label' => esc_html__( 'Batches', 'woo-batches' ),
'target' => 'woo_batches',
'class' => [ 'show_if_simple', 'show_if_variable', 'show_if_batches' ],
'priority' => 25
];
return $tabs;
}
But when I check/uncheck my option, the tab does absolutely nothing. Do I need my own hiding JS function here or am I missing something? I normally thought that I can show/hide everything with
show_if_xxx
hide_if_xxx
