다른 사용자가 사용자 목록에서 관리자를 볼 수있는 기능을 제거 하시겠습니까? 인 클라이언트

( 진행자 주 : 원본 제목은 “사용자 메뉴에서 관리자 제거”)

기본적으로 사용자를 추가 / 제거 할 수있는 편집자 인 클라이언트 관리자 역할을 만들었습니다. 기사 편집기 관리자를 제외한 모든 사용자를 새로 만들 수는 편집하거나 트루 관리 사용자를 작성에서 내 새로운 클라이언트 관리 역할을 유지하는 데 우수했다.

그러나 이상적인 것은 클라이언트 관리자가 사용자를 볼 때 관리자를 숨기는 것입니다. 나는 그들이 원하는 “믿는다” 본질적으로 숨어 – 그들은 자신의 사이트의 관리자 있다고하지만 그들도 내 역할 / 사용자를 볼 수 없도록하려면 “관리자” 그들이에있을 때 그들로부터 역할을 “사용자” 패널.



답변

@Carlos 안녕하세요 :

테마 functions.php파일 또는 .php작성중인 플러그인 내의 파일 (WordPress 3.1.x에서 작동)에 다음을 추가하십시오.

add_action('pre_user_query','yoursite_pre_user_query');
function yoursite_pre_user_query($user_search) {
  $user = wp_get_current_user();
  if ($user->ID!=1) { // Is not administrator, remove administrator
    global $wpdb;
    $user_search->query_where = str_replace('WHERE 1=1',
      "WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where);
  }
}

WordPress 3.0.x를 사용하는 경우이를 대신 시도하십시오 (WordPress가 'pre_user_query'3.1까지 후크를 추가하지 않았기 때문에 ).

add_action('pre_user_search','yoursite_pre_user_search');
function yoursite_pre_user_search($user_search) {
  $user = wp_get_current_user();
  if ($user->ID!=1) { // Is not administrator, remove administrator
    global $wpdb;
    $user_search->query_where = str_replace('WHERE 1=1',
      "WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where);
  }
}


답변

MikeSchinkel의 답변에 대한 수정 사항은 현재 사용자가 관리자 역할을 가지고 있는지 확인하고 그렇지 않은 경우 구독자 인 사용자 만 선택합니다.

add_action('pre_user_query','yoursite_pre_user_query');
function yoursite_pre_user_query($user_search) {
    $user = wp_get_current_user();

    if ( $user->roles[0] != 'administrator' ) {
        global $wpdb;

        $user_search->query_where =
        str_replace('WHERE 1=1',
            "WHERE 1=1 AND {$wpdb->users}.ID IN (
                 SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta
                    WHERE {$wpdb->usermeta}.meta_key = '{$wpdb->prefix}user_level'
                    AND {$wpdb->usermeta}.meta_value = 0)",
            $user_search->query_where
        );

    }
}


답변

사용자 수준은 더 이상 사용되지 않으므로이 방법은 대신 기능을 검사합니다.

/** Hide Administrator From User List **/
function isa_pre_user_query( $user_search ) {
    if ( !current_user_can( 'administrator' ) ) { // Is Not Administrator - Remove Administrator
        global $wpdb;

        $user_search->query_where = str_replace(
            'WHERE 1=1',
            "WHERE 1=1 AND {$wpdb->users}.ID IN (
              SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta
              WHERE {$wpdb->usermeta}.meta_key = '{$wpdb->prefix}capabilities'
              AND {$wpdb->usermeta}.meta_value NOT LIKE '%administrator%' )",
            $user_search->query_where
        );
    }
}

add_action( 'pre_user_query', 'isa_pre_user_query' );


답변

pre_user_query작업은 WordPress 3.1.0부터 사용자 쿼리를 변경하는 데 사용될 수 있습니다


답변