Если вы хотите удалить вкладки, а не прятать их с помощью CSS, то вы можете добавить следующую к вашей теме functions.php:
add_filter('woocommerce_settings_tabs_array', 'remove_woocommerce_setting_tabs', 200, 1);
function remove_woocommerce_setting_tabs($tabs) {
// Declare the tabs we want to hide
$tabs_to_hide = array(
'Tax',
'Checkout',
'Emails',
'API',
'Accounts',
);
// Get the current user
$user = wp_get_current_user();
// Check if user is a shop-manager
if (isset($user->roles[0]) && $user->roles[0] == 'shop_manager') {
// Remove the tabs we want to hide
$tabs = array_diff($tabs, $tabs_to_hide);
}
return $tabs;
}
Используется фильтр WoCommerce woocommerce_settings_tabs_array. Для получения дополнительной информации обо всех фильтрах и перехватах WooCommerce вы можете посмотреть здесь: https://docs.woocommerce.com/wc-apidocs/hook-docs.html
Это просто добавило преимущества, что он больше не находится в HTML, поэтому, если кто-то смотрит на источник, они не найдут элементы ,
Вы по-прежнему можете получить доступ к URL-адресам. Это всего лишь способ удалить вкладки, а не скрывать их.
EDIT: Я выяснил, как остановить доступ к URL-адресам. Скопируйте следующее:
add_filter('woocommerce_settings_tabs_array', 'remove_woocommerce_setting_tabs', 200, 1);
function remove_woocommerce_setting_tabs($array) {
// Declare the tabs we want to hide
$tabs_to_hide = array(
'tax' => 'Tax',
'checkout' => 'Checkout',
'email' => 'Emails',
'api' => 'API',
'account' => 'Accounts',
);
// Get the current user
$user = wp_get_current_user();
// Check if user is a shop_manager
if (isset($user->roles[0]) && $user->roles[0] == 'shop_manager') {
// Remove the tabs we want to hide from the array
$array = array_diff_key($array, $tabs_to_hide);
// Loop through the tabs we want to remove and hook into their settings action
foreach($tabs_to_hide as $tabs => $tab_title) {
add_action('woocommerce_settings_' . $tabs , 'redirect_from_tab_page');
}
}
return $array;
}
function redirect_from_tab_page() {
// Get the Admin URL and then redirect to it
$admin_url = get_admin_url();
wp_redirect($admin_url);
exit;
}
Это почти так же, как и первый бит кода, кроме массива структурированы по-другому, и я добавил Еогеасп. Предпросмотр проходит через список вкладок, которые мы хотим заблокировать, перехватывает действие «woocommerce_settings _ {$ tab}», которое используется для отображения страниц настроек.
Затем я создал функцию redirect_from_tab_page, чтобы перенаправить пользователей на URL-адрес администратора по умолчанию. Это останавливает прямой доступ к вкладкам различных настроек.
Спасибо за это. В результате я использовал правила переадресации для предотвращения доступа к самим URL-адресам. –
См. Мой обновленный ответ, я получил эту работу, используя крючки действий. Может быть проще иметь все это в WordPress, а затем использовать правила переадресации. Я хотел сделать это так, так как мой WordPress - это многопользовательская установка. –
Отлично. Я также хотел использовать его для многоуровневой установки. Я должен отметить этот ответ как принятый –