WP 관리 영역에 대한 액세스를 관리자를 제외한 모든 사용자로 어떻게 제한합니까?
우리 사이트의 사용자는 필요한 모든 기능을 수행하는 자신의 프로필 페이지를 가지고 있습니다.
따라서 관리자는 관리자를 제외한 모든 사람에게 제한을 두지 않아야합니다.
그렇게하는 방법?
WP 관리 영역에 대한 액세스를 관리자를 제외한 모든 사용자로 어떻게 제한합니까?
우리 사이트의 사용자는 필요한 모든 기능을 수행하는 자신의 프로필 페이지를 가지고 있습니다.
따라서 관리자는 관리자를 제외한 모든 사람에게 제한을 두지 않아야합니다.
그렇게하는 방법?
답변:
우리는 admin_init
작업에 연결 current_user_can()
하고 현재 사용자가 할 수 있는지 확인 하는 기능을 사용하여 사용자가 관리자 인지 확인할 수 있습니다 manage_options
. 이는 관리자 만 할 수있는 일입니다.
이 코드는 functions.php 파일에 붙여 넣을 때 관리자가 아닌 사람이 대시 보드에 액세스하려고 할 때 메시지를 표시합니다.
function wpse_11244_restrict_admin() {
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
return;
}
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( __( 'You are not allowed to access this part of the site' ) );
}
}
add_action( 'admin_init', 'wpse_11244_restrict_admin', 1 );
원하는 경우 사용자를 홈 페이지로 리디렉션하여 더 나은 사용자 환경을 제공 할 수 있습니다.
function wpse_11244_restrict_admin() {
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
return;
}
if ( ! current_user_can( 'manage_options' ) ) {
wp_redirect( home_url() );
exit;
}
}
add_action( 'admin_init', 'wpse_11244_restrict_admin', 1 );
사용자를 자신의 프로필 페이지로 리디렉션하려면 home_url()
위 코드를 링크로 바꿉니다.
manage_options
는 관리자를 검사하는 데 허용되는 방법입니다. Mark Jaquith 조차도 이렇게 말합니다
manage_options
"관리자"만 할 수 있고 사실이 아니며, manage_options
기능이며 관리자 역할에서 제거되거나 다른 사용자 역할에 할당 될 수 있다고 말합니다 . 중요한 것은하고 싶은 일을 알고 최선의 방법을 선택하는 것입니다. 내 대답을 참조하십시오.
manage_options
으로 manage_network
. 후자는 기본 "사이트 관리자"에 대해서도 대시 보드를 비활성화하지만 최고 관리자 (네트워크 관리자)는 액세스 권한을 유지합니다.
플러그인을 작성하고에 연결할 수 admin_init
있습니다.
코덱은 실제로 원하는 기능이 포함 된 예를 제공합니다.
http://codex.wordpress.org/Plugin_API/Action_Reference/admin_init#Example:_Access_control
주어진 답변 중 일부는 대부분의 상황에서 괜찮을 수 있지만 사용자 역할을 확인하는 답변, 기능 및 기능을 할당하고 양식 역할을 제거 할 수 있는지 확인하는 답변이 없기 때문에 요청 된 내용을 정확하게 수행한다고 보증하는 사람은 없습니다. 따라서 정확한 답변을 제공하려면 기능이 아닌 사용자 역할을 확인해야합니다.
add_action( 'admin_init', 'allow_admin_area_to_admins_only');
function allow_admin_area_to_admins_only() {
if( defined('DOING_AJAX') && DOING_AJAX ) {
//Allow ajax calls
return;
}
$user = wp_get_current_user();
if( empty( $user ) || !in_array( "administrator", (array) $user->roles ) ) {
//Redirect to main page if no user or if the user has no "administrator" role assigned
wp_redirect( get_site_url( ) );
exit();
}
}
사용자에게 "manage_options"기능이 있는지 확인하려면 할 수 있습니다. 실제로 대부분의 경우 가장 적합한 옵션입니다. 이 기능은 기본적으로 관리자에게 연결되어 있지만 기능을 관리자 역할에서 제거하거나 다른 사용자 역할에 할당 할 수 있습니다. 따라서 대부분의 경우 사용자 역할을 확인하는 것보다 사용자가 할 수 있거나 할 수없는 것을 확인하는 것이 좋습니다. 따라서 대부분의 경우 기능 확인이 선택되어야하지만이 개념을 명확하게 이해하고 상황과 목적에 가장 적합한 옵션을 선택하십시오.
add_action( 'admin_init', 'admin_area_for_manage_options_only');
function admin_area_for_manage_options_only() {
if( defined('DOING_AJAX') && DOING_AJAX ) {
//Allow ajax calls
return;
}
if( ! current_user_can( "manage_options" ) ) {
//Redirect to main page if the user has no "manage_options" capability
wp_redirect( get_site_url( ) );
exit();
}
}
관리 플러그인을 사용해보십시오 .
그걸로 물건을 잘 고정시킬 수 있습니다.
htaccess 파일을 통해 액세스를 설정할 수도 있습니다.
function wpse_11244_restrict_admin() {
if (!current_user_can('update_core')) {
wp_die(__('You are not allowed to access this part of the site'));
}
}
add_action('admin_init', 'wpse_11244_restrict_admin', 1);
'administrator'
기능이 아닙니다. 이전 버전과의 호환성을 유지하기 위해 작동합니다. 'update_core'
또는 다른 관리자 기능을 확인하십시오 .
이 라인을 당신의 functions.php
function baw_no_admin_access()
{
if( !current_user_can( 'administrator' ) ) {
wp_redirect( home_url() );
die();
}
}
add_action( 'admin_init', 'baw_no_admin_access', 1 );