2017-11-16 1 views
1

먼저 WordPress 학습자입니다. 내 코드가 어리 석다면 미안 해요!WordPress : 사용자 지정 역할을 가진 사용자는 wp-admin에 액세스 할 수 없습니다.

사용자 지정 사용자 역할을 사용하여 사용자 지정 테마를 만들었습니다. 나는 어떤 플러그인도 개발하지 않고있다.

내 fucntions.php 파일에서 사용자 역할을 만들려면 다음 코드를 작성했습니다. 이 역할에 할당 된 사용자는 관리자에게 로그인해야하지만 프로필 페이지에만 액세스 할 수 있습니다.

add_action('init', 'yrc_cst_register_role_customer_service_rep'); 

/** 
* Register new user role 
*/ 

function yrc_cst_register_role_customer_service_rep() { 

    $wp_roles = new WP_Roles(); 

    $wp_roles->remove_role('subscriber'); 
    $wp_roles->remove_role('editor'); 
    $wp_roles->remove_role('contributor'); 
    $wp_roles->remove_role('author'); 

    $service_rep_caps = array(
     'read'    => false, 
     'create_posts'  => false, 
     'edit_posts'  => false, 
     'edit_others_posts' => false, 
     'publish_posts'  => false, 
     'manage_categories' => false, 
     'manage_options' => false, 
    ); 

    add_role('customer_service', __('Customer Service'), $service_rep_caps); 
} 

이 포털에 다른 역할이 필요하지 않으므로 Administrator를 제외한 모든 역할이 제거되었습니다. 관리자는 고객 서비스 역할의 사용자 만 생성합니다.

시스템에 제 3 자 플러그인이 설치되어 있지 않습니다.

사용자 정의 역할을 가진 사용자는 정상적으로 작동하는 사용자 정의 로그인 페이지를 통해 시스템에 로그인 할 수 있습니다. 그러나 프로필 페이지에 액세스하려고 시도 할 때마다 다음 오류 메시지가 표시됩니다.

죄송합니다.이 페이지에 액세스 할 수 없습니다.

'edit_profile' => true 같은 것이 있습니까?

나는 틀린 일을해야합니다. 그러나 나의 제한된 지식으로는 이것을 이해하기에 충분하지 않습니다. 어떤 제안이라도 높게 평가 될 것입니다.

+0

을 코멘트 => 사실 – Stender

+0

하지만 다시 - 가입자가 기본적으로 단지 바로, 자신의 프로필 페이지에 액세스 할 수 있습니까? – Stender

+0

예 - 역할은 '읽어야'합니다. – Stender

답변

1

에 액세스 할 수 있습니다 당신처럼 할 수있을 것 이 :

가입자 역할 기능을 복제하고 이에 대한 역할을 만들어야합니다.

add_action('init', 'CreatecloneRoleSubscriber'); 

function CreatecloneRoleSubscriber() 
{ 
    global $wp_roles; 
    if (! isset($wp_roles)) 
     $wp_roles = new WP_Roles(); 

    $sub = $wp_roles->get_role('Subscriber'); 
    //Adding a 'new_role' with all subscriber caps 
    $wp_roles->add_role('customer_service', 'Customer Service', $sub->capabilities); 
} 

편집 : 문제 읽기 토론 나는 그가 '읽기'neads 생각

+0

복제 - 위대한 것들! –

0

그냥 경우 true로 manage_options을 변경하지만 true로 manage_options을 허용하여 해당주의, 그 사용자가 다른 대시 보드의 부품뿐만 아니라

$service_rep_caps = array(
    'read'    => false, 
    'create_posts'  => false, 
    'edit_posts'  => false, 
    'edit_others_posts' => false, 
    'publish_posts'  => false, 
    'manage_categories' => false, 
    'manage_options' => true, // Most plugins and pages check for manage_options for checking access level to allow access to pages and settings. 
); 
+0

맞아요.하지만이 역할을 가진 사용자에게는 요구 사항에 따라 허용되지 않습니다. –

관련 문제