Правильный хук, который нужно использовать: woocommerce_settings_tabs_array
.
Сначала вам нужно найти, какие ключи массива необходимо удалить из массива tabs в вашем коде.
Для этого вы сначала будете использовать следующую функцию, которая будет отображать все данные массива в настройках Admin WooCommerce (только для тестирования, подлежит удалению) :
<code>add_filter( 'woocommerce_settings_tabs_array', 'filter_wc_settings_tabs_array', 990, 1 );
function filter_wc_settings_tabs_array( $tabs_array ) {
// Display raw array data
echo '<pre>'; print_r( $tabs_array ); echo '
'; return $ tabs_array; }
Будет отображаться что-то вроде (со всеми необходимыми ключами массива) :
Теперь вы можете получить слагаемые ключей массива, чтобы убрать соответствующие настройки вкладки. Так что теперь вы сможете найти правильный слаг ключа массива для себя. Вкладка настроек стороннего плагина WooCommerce, которую вы будете использовать в приведенном ниже коде функции.
Для нацеливания указать c роль пользователя , вы можете использовать global $ current_user; $ Current_user-> роли; или выделенная функция Wordpress current_user_can()
…
Таким образом, рабочий код, который удалит определенные c вкладки настроек для роли пользователя, выглядит так:
add_filter( 'woocommerce_settings_tabs_array', 'filter_wc_settings_tabs_array', 200, 1 );
function filter_wc_settings_tabs_array( $tabs_array ) {
// Only for "shipping_manager" user role
if( current_user_can( 'shipping_manager' ) ) {
// Remove some specific tabs
unset( $tabs_array['general'], $tabs_array['order_status'] ); // <== replace 'order_status' by
}
return $tabs_array;
}
Код идет в функции. php файл вашей активной дочерней темы (или активной темы). Проверено и работает.