관리자 만 대시 보드 액세스를 제한하는 방법은 무엇입니까? 대한 액세스를 관리자를 제외한

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()위 코드를 링크로 바꿉니다.


답변

플러그인을 작성하고에 연결할 수 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);

답변

이 라인을 당신의 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 );

답변

최종 사용자에게 오류가 발생하지 않도록 시도하십시오. 좋은 UX에 대하여. 이 코드는 홈으로 리디렉션합니다.

    add_action( 'init', 'blockusers_init' );
function blockusers_init() {
if ( is_admin() && ! current_user_can( 'administrator' ) &&
! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
wp_redirect( home_url() );
exit;
}
}