WooCommerce is the more powerful e-commerce plugin for WordPress.And what i love with WooCommerce is that there’s an API for nearly everything.There are almost Hooks and filters For Every Customization work.
Let’s talk about customizing Woocommerce Admin setting Tabs.To hide a specific Woocommerce setting tab or want to customize the Woocommerce setting tabs, not the entire sub-menu, but just a tab.For just Removing tabs we can use 'woocommerce_settings_tabs_array'
Woocommerce Filter.
If you want to remove tabs instead of hiding them using CSS, then you can add the following to yours theme’s functions.php.
function RemoveWoocommerceSettingTabs( $value) { // the tabs we want to hide $tabToHide = array( 'tax' => 'Tax', 'checkout' => 'Checkout', 'products' => 'products', 'shipping' => 'Shipping', 'integration' => 'Integration', 'advanced' => 'Advanced', 'email' => 'Emails', 'api' => 'API', 'account' => 'Accounts', ); // Tabs We want to hide $value= array_diff_key($value, $tabToHide); return $value; } add_filter('woocommerce_settings_tabs_array','RemoveWoocommerceSettingTabs');
In this code $value passed in Function is empty variable,because all WooCommerce tabs has priority equal to 20.
so we have to add higher priority than 20, so now filter is.
add_filter('woocommerce_settings_tabs_array','RemoveWoocommerceSettingTabs', 200, 1);
But WE can still access the URLs of tabs .So This is just a way of removing the tabs Form html instead of hiding them. Means this filter just added benefit that tabs is not in HTML, so if we look at the source code, we would not find the elements.
So we have to modify the hook more.
function RemoveWoocommerceSettingTabs( $value) { // the tabs we want to hide $tabToHide= array( 'tax' => 'Tax', 'checkout' => 'Checkout', 'products' => 'products', 'shipping' => 'Shipping', 'integration' => 'Integration', 'advanced' => 'Advanced', 'email' => 'Emails', 'api' => 'API', 'account' => 'Accounts', ); // Tabs We want to hide $value= array_diff_key($value, $tabToHide); foreach($tabToHide as $tabs => $title) { add_action( 'woocommerce_settings_' . $array, 'RedirectFromTabPage'); } return $value; } add_filter('woocommerce_settings_tabs_array','RemoveWoocommerceSettingTabs', 200, 1); function RedirectFromTabPage() { wp_redirect(get_admin_url().’/admin.php?page=wc-settings’); exit; }
I have added a foreach loop that goes through list of tabs we want to block and hooks it into the ‘woocommerce_settings_{$tab}’ action which is used to show settings pages of WooCommerce. Function 'RedirectFromTabPagefunction'
is used for redirecting to custom URL.
Enjoy.