2014-04-08 5 views
1

사용자 정의 게시 유형이 있으며 구독자 롤이 자신의 게시물을 편집하고 삭제할 수있게하려고합니다. 나는 다음 코드가 있습니다와구독자 역할이 자신의 사용자 정의 게시 유형을 편집하고 삭제하도록 허용하는 방법

function agents_create_post_type() { 
$labels = array(
    'name'    => __('Agents', 'ee'), 
    'singular_name'  => __('Agent', 'ee'), 
    'add_new'   => __('Add New', 'ee'), 
    'add_new_item'  => __('Add New Agent', 'ee'), 
    'edit_item'   => __('Edit Agent', 'ee'), 
    'new_item'   => __('New Agent', 'ee'), 
    'all_items'   => __('All Agents', 'ee'), 
    'view_item'   => __('View Agent', 'ee'), 
    'search_items'  => __('Search Agent', 'ee'), 
    'not_found'   => __('No agents found', 'ee'), 
    'not_found_in_trash' => __('No agents found in Trash', 'ee'), 
    'parent_item_colon' => '', 
      'menu_name'   => __('Agents', 'ee'), 
); 
    $capabilities = array(
     'publish_posts' => 'publish_agents', 
     'edit_posts' => 'edit_agents', 
     'edit_others_posts' => 'edit_others_agents', 
     'delete_posts' => 'delete_agents', 
     'delete_others_posts' => 'delete_others_agents', 
     'read_private_posts' => 'read_private_agents', 
     'edit_post' => 'edit_agent', 
     'delete_post' => 'delete_agent', 
     'read_post' => 'read_agent' 
     ); 
    register_post_type('agent', 
    array(
     'labels'  => $labels, 
     'rewrite'  => array(
     'slug' => __('agents', 'ee') 
      ), 
     'hierarchical' => true, 
     'supports'  => array('title', 'editor', 'thumbnail', 'page-attributes'), 
     'public'  => true, 
     'has_archive' => true, 
     'menu_position' => 32, 
        'map_meta_cap'=>true, 
        'capabilities' => $capabilities, 
     'menu_icon'  => get_template_directory_uri() .'/img/agents.png', 
    ) 
); 


} 

add_action('init', 'agents_create_post_type'); 


function add_capability() { 
    $admins = get_role('administrator'); 
    $admins->add_cap('publish_agents'); 
    $admins->add_cap('edit_agents'); 
    $admins->add_cap('edit_others_agents'); 
    $admins->add_cap('delete_agents'); 
    $admins->add_cap('delete_others_agents'); 
    $admins->add_cap('read_private_agents'); 
    $admins->add_cap('edit_agent'); 
    $admins->add_cap('delete_agent'); 
    $admins->add_cap('read_agent'); 

    $subscriber = get_role('subscriber'); 
    $subscriber->add_cap('edit_agents'); 
    $subscriber->add_cap('delete_agents'); 

} 
add_action('admin_init', 'add_capability'); 

을 그 내가보기 에이전트를 추가 할 수있는 패널 컨트롤에서 가입자의 메뉴를 가지고,하지만 난 가입자에 대한 권한을 especified 경우에도, 해당 목록을 나열 할 때이 번 것 다 게시물이 게시되었습니다 관리자가 링크를 편집하려면, 각 게시물을 더 이상 나타나지 않는 삭제, 위의 권한으로 충분하다고 생각. 어떤 단서라도 매우 감사 할 것입니다! ... edit_published_agents 캡 을하고이 링크를 확인하십시오 :

답변

-1

이 추가 https://codex.wordpress.org/Function_Reference/get_post_type_capabilities

function agents_create_post_type() { 
$labels = array(
    'name'    => __('Agentes', 'ee'), 
    'singular_name'  => __('Agente', 'ee'), 
    'add_new'   => __('Add New', 'ee'), 
    'add_new_item'  => __('Add New Agent', 'ee'), 
    'edit_item'   => __('Edit Agent', 'ee'), 
    'new_item'   => __('New Agent', 'ee'), 
    'all_items'   => __('All Agents', 'ee'), 
    'view_item'   => __('View Agent', 'ee'), 
    'search_items'  => __('Search Agent', 'ee'), 
    'not_found'   => __('No agents found', 'ee'), 
    'not_found_in_trash' => __('No agents found in Trash', 'ee'), 
    'parent_item_colon' => '', 
    'menu_name'   => __('Agentes', 'ee'), 
); 
    $capabilities = array(
     'publish_posts' => 'publish_agents', 
     'edit_posts' => 'edit_agents', 
     'edit_others_posts' => 'edit_others_agents', 
     'delete_posts' => 'delete_agents', 
     'delete_others_posts' => 'delete_others_agents', 
     'read_private_posts' => 'read_private_agents', 
     'edit_post' => 'edit_agent', 
     'delete_post' => 'delete_agent', 
     'read_post' => 'read_agent', 
     'edit_published_posts' => 'edit_published_agents' 
     ); 
    register_post_type('agent', 
    array(
     'labels'  => $labels, 
     'rewrite'  => array(
     'slug' => __('agents', 'ee') 
      ), 
     'hierarchical' => true, 
     'supports'  => array('title', 'editor', 'thumbnail', 'page-attributes'), 
     'public'  => true, 
     'has_archive' => true, 
     'menu_position' => 32, 
        'map_meta_cap'=>true, 
        'capabilities' => $capabilities, 
     'menu_icon'  => get_template_directory_uri() .'/img/agents.png', 
    ) 
); 


} 
add_action('init', 'agents_create_post_type'); 


function add_capability() { 

    // capabilities for administrator 
    $admins = get_role('administrator'); 
    $admins->add_cap('publish_agents'); 
    $admins->add_cap('edit_agents'); 
    $admins->add_cap('edit_others_agents'); 
    $admins->add_cap('delete_agents'); 
    $admins->add_cap('delete_others_agents'); 
    $admins->add_cap('read_private_agents'); 
    $admins->add_cap('edit_agent'); 
    $admins->add_cap('delete_agent'); 
    $admins->add_cap('read_agent'); 

    // capabilities for subscriber 
    // delete caps that you don´t use 
    $subscriber = get_role('subscriber'); 
    $subscriber->add_cap('publish_agents'); 
    $subscriber->add_cap('edit_agents'); 
    $subscriber->add_cap('edit_others_agents'); 
    $subscriber->add_cap('edit_published_agents'); 
    $subscriber->add_cap('delete_agents'); 
    $subscriber->add_cap('delete_others_agents'); 
    $subscriber->add_cap('read_private_agents'); 
    $subscriber->add_cap('edit_agent'); 
    $subscriber->add_cap('delete_agent'); 
    $subscriber->add_cap('read_agent'); 
} 
add_action('admin_init', 'add_capability');