( 진행자 주 : 원본 제목은 “사용자 메뉴에서 관리자 제거”)
기본적으로 사용자를 추가 / 제거 할 수있는 편집자 인 클라이언트 관리자 역할을 만들었습니다. 기사 ” 편집기 관리자를 제외한 모든 사용자를 새로 만들 수는 “ 편집하거나 트루 관리 사용자를 작성에서 내 새로운 클라이언트 관리 역할을 유지하는 데 우수했다.
그러나 이상적인 것은 클라이언트 관리자가 사용자를 볼 때 관리자를 숨기는 것입니다. 나는 그들이 원하는 “믿는다” 본질적으로 숨어 – 그들은 자신의 사이트의 관리자 있다고하지만 그들도 내 역할 / 사용자를 볼 수 없도록하려면 “관리자” 그들이에있을 때 그들로부터 역할을 “사용자” 패널.
답변
@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부터 사용자 쿼리를 변경하는 데 사용될 수 있습니다