특정 사용자 역할에서 대시 보드 액세스를 제거하려면 어떻게합니까?


11

특정 사용자 역할이 대시 보드 http://www.openeye.net/wp-admin/ 에 전혀 액세스하지 못하게하고 싶습니다 . 사이트에서 볼 수있는 새 페이지로 사용자 프로필을 이동하고 스타일을 변경했습니다. 어떻게하면 되나요?


WooCommerce에 설정 변경을 요청 했으므로 메뉴의 일부에 대한 권한을 관리 할 수 ​​있습니다. 아이디어는 다음에 투표해야합니다 : https://ideas.woocommerce.com 감사합니다!
Stefan

답변:


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');

희망이 도움이됩니다. 모든 역할은 사용자에게 해당 역할의 이름 인 기능을 제공하므로 모든 역할 이름을 기능으로 사용할 수 있습니다.


훌륭하지만 두 번째 줄에 구문 오류가 발생합니다.
Zach Shallbetter

오, 그것은 여분과 관련이 있습니다 (after ( 'DOING_AJAX')
Zach Shallbetter

아 죄송합니다. 그것은 의도적이었습니다. 마지막에 또 다른 문이 닫힐 예정이었습니다. 나는 그것을 대답에 추가했다.
John P Bloch

2011 테마 및 멤버 플러그인에서 작동하지 않는 이유가 있습니까?
Zach Shallbetter

1
이것은 네트워크 사이트에서 작동하지 않는 것 같습니다. 이유가 무엇입니까?
Zach Shallbetter

2
//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();
      }
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.