Как удалить доступ к панели мониторинга из определенных пользовательских ролей?

11

Я бы хотел вообще запретить доступ определенных пользовательских ролей к панели инструментов http://www.openeye.net/wp-admin/ . Я переместил и обновил пользовательские профили на новую страницу, которую можно просмотреть на сайте. Как бы я поступил так?

Зак Шалбеттер
источник
Я попросил WooCommerce изменить их настройки, чтобы можно было управлять авторизацией для их части меню. Идея нуждается в голосовании на: https://ideas.woocommerce.com Пожалуйста, дайте ей максимум 3 балла, спасибо!
Стефан

Ответы:

22

Чтобы заблокировать подписчиков и участников вне администратора:

function wpse23007_redirect(){
  if( is_admin() && !defined('DOING_AJAX') && ( current_user_can('subscriber') || current_user_can('contributor') ) ){
    wp_redirect(home_url());
    exit;
  }
}
add_action('init','wpse23007_redirect');

Надеюсь, это поможет. Все роли дают пользователю возможность, которая является именем этой роли, поэтому вы можете использовать любое имя роли в качестве возможности.

Джон П Блох
источник
Отлично, однако я получаю синтаксическую ошибку во второй строке.
Зак Шалбеттер
О, хорошо, это связано с дополнительным (после ('DOING_AJAX')
Зак Shallbetter
Ой, извини; это было преднамеренно. Там должно было быть еще одно закрытие в конце. Я добавил это к ответу.
Джон П Блох
Есть ли причина, по которой это не работает с темой 2011 года и плагином для участников?
Зак Шелбеттер,
1
Похоже, это не работает на сайтах сети.
Зак Шелбеттер,
1
//If User Roll is Subscriber, It can not login in Dashboard 
function wpse23007_redirect()
{
    if( is_admin() && !defined('DOING_AJAX') && current_user_can('subscriber') )
    {
        wp_logout();
        wp_redirect(home_url());
        exit;
    }
}
add_action('init','wpse23007_redirect');
Ганпат Рабари
источник
0
 add_action('init', function(){

      $redirect = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : home_url( '/' );
      $user = wp_get_current_user();
      if ( !defined('DOING_AJAX') && in_array( 'subscriber', (array) $user->roles ) ) {

          wp_redirect($redirect);
          exit();
      }
});
Sudip
источник