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


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();
      }
});
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.