Add custom product tabs in WooCommerce
This post is regarding how we can add custom tabs on a product page on the front-end.
These tabs are additional to the default ‘Description’, ‘Reviews’ and ‘Additional information’ tabs that are available by default.
The default tabs in WooCommerce have the following priorities:
- Description 10
- Additional information 20
- Reviews 30
For adjusting your product in between them we need to give priorities in between.
How to Change the default tab position
function ChangeTabPosition( $tabs ) { if ( isset( $tabs['description'] ) ) { $tabs['description']['priority'] = 29; } if ( isset( $tabs['additional_information'] ) ) { $tabs['additional_information']['priority'] = 10; } return $tabs; } add_filter('woocommerce_product_tabs','ChangeTabPosition' );
For Adding Product Tab on Product Page we have to define tab and it’s callback in woocommerce hook 'woocommerce_product_tabs'
.
The ‘woocommerce_product_tabs’ filter provided by WooCommerce should be used for adding a custom tab to a single product page in WooCommerce. The code should be added to the functions.php file of your theme.
Example :
Before
function AddNewTab( $tabs ) { $tabs['my_new_tab'] = array( 'title' => 'New Tab', 'callback' => 'new_custom_tab_content', 'priority' => 51, ); return $tabs; } add_filter('woocommerce_product_tabs','AddNewTab' ); function new_custom_tab_content($slug,$tab) { echo '<h3>' . $tab['title'] . '</h3><p>Add Your Content.</p>'; }
After
We can also do this For a Specific Product Or For Specific Product Type.
Example : For Specific Product
function AddNewTab( $tabs ) { global $product; if( $product->get_id() == 786 ) { $tabs['my_new_tab'] = array( 'title' => 'New Tab', 'callback' => 'new_custom_tab_content', 'priority' => 51, ); } return $tabs; } add_filter('woocommerce_product_tabs','AddNewTab'); function new_custom_tab_content($slug,$tab) { echo '<h3>' . $tab['title'] . '</h3><p>Add Your Content.</p>'; }
Example : For Specific Product Type
function AddNewTab( $tabs ) { global $product; if( $product->is_type( 'variable' ) ) { $tabs['my_new_tab'] = array( 'title' => 'New Tab', 'callback' => 'new_custom_tab_content', 'priority' => 51, ); } return $tabs; } add_filter('woocommerce_product_tabs','AddNewTab'); function new_custom_tab_content($slug,$tab) { echo '<h3>' . $tab['title'] . '</h3><p>Add Your Content.</p>'; }