Скрыть в панели инструментов Woocommerce, для подменю «Заказ» для определенной роли пользователя в Woocommerce - PullRequest
2 голосов
/ 18 апреля 2019

if (!current_user_can('administrator')) {
 function remove_admin_menus () {
     global $menu;
     $removed = array(
         __('WooCommerce'),
         );
     end ($menu);
    while (prev($menu)){
         $value = explode(
                 ' ',
                 $menu[key($menu)][0]);
         if(in_array($value[0] != NULL?$value[0]:"" , $removed)){
             unset($menu[key($menu)]);
         }
     }
 }
 }
 add_action('admin_menu', 'remove_admin_menus');

Этот код скрывает весь элемент Woocommerce из панели инструментов Wordpress, если вы являетесь администратором, но я не нашел решения, позволяющего скрыть только подменю «Заказы», ​​а не всеitem. enter image description here У кого есть идея?

1 Ответ

2 голосов
/ 18 апреля 2019

Вы взяли глобальный $menu вместо $submenu.Тогда вы получите список всех submenus зарегистрированных.Вы можете добавить следующий код.Также лучше проверить, является ли пользователь администратором внутри вызова функции

 function remove_admin_menus(){
  global $submenu;
  if(current_user_can('administrator')){
    unset($submenu['woocommerce']['1']);
  }
}
add_action('admin_menu', 'remove_admin_menus');

ОБНОВЛЕНИЕ

Даже если меню скрыто, доступ к странице можно получить, если онзнает URL.Для того чтобы заблокировать доступ к URL, добавьте следующее

function restrict_woo_submenu_userrole(){
  $current_screen = get_current_screen();
  $p_id = $current_screen->id;
  if($p_id == 'edit-shop_order' && current_user_can('administrator')){
    wp_die('Restricted Access.');
  }
}
add_filter( 'current_screen', 'restrict_woo_submenu_userrole' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...