2017-08-24 1 views
1

Ich habe einen benutzerdefinierten Beitragstyp und eine Benutzerrolle erstellt. Eine Funktion weist der neuen Benutzerrolle Funktionen zu. Wenn ich auf die Seite edit.php? Post_type = cv gehe (mit dem Admin-Benutzer) sehe ich die anderen Benutzer cv Beiträge, aber ich kann sie nicht bearbeiten. Ich habe die Fähigkeit 'edit_others_cvs' zugewiesen ... also verstehe ich nicht, warum ich die Posts der Benutzer nicht bearbeiten kann. Kannst du mir helfen ?der Administrator kann die anderen Benutzer nicht bearbeiten benutzerdefinierten Beitragstyp

function cv_custom_posttype() { 

$labels = array(
    'not_found'   => 'cv not found' 
); 

$args = array(
    'labels'    => $labels, 
    'public'    => true, 
    'publicly_queryable' => true, 
    'query_var'    => true, 
    'show_ui'    => true, 
    'show_in_menu'   => true, 
    'hierarchical'   => false, 
    'menu_position'   => 5, 
    'register_meta_box_cb' => 'add_cv_metaboxes', 
    'supports'    => false, 
    'has_archive'   => false, 
    'capability_type'  => array("cv", "cvs"), 
    'map_meta_cap'   => true 
); 
register_post_type('cv', $args); 

function add_cv_user_role() { 
add_role('cv_member', 
      'cv member', 
      array(
       'read' => true, 
       'edit_posts' => false, 
       'delete_posts' => false, 
       'publish_posts' => false 
      ) 
     ); 
} 
register_activation_hook(__FILE__, 'add_cv_user_role'); 

function cv_add_role_caps() { 

     // Add the roles you'd like to administer the custom post types 
     $roles = array('administrator', 'cv_member'); 

     // Loop through each role and assign capabilities 
     foreach($roles as $the_role) { 

      $role = get_role($the_role); 

       $role->add_cap('read'); 
       $role->add_cap('read_cv'); 
       $role->add_cap('edit_cv'); 
       $role->add_cap('edit_cvs'); 
       $role->add_cap('edit_published_cvs'); 
       $role->add_cap('publish_cvs'); 
       $role->add_cap('delete_published_cvs'); 

       if($role == 'administrator') { 
        $role->add_cap('read_private_cvs'); 
        $role->add_cap('edit_others_cvs'); 
        $role->add_cap('delete_others_cvs'); 
        $role->add_cap('delete_private_cvs'); 
       } 

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

Antwort

0

Die get_role() Funktion ein WP_Role Objekt zurückgibt, also was Sie brauchen, ist die name Eigenschaft des Objekts anstelle des Objekts selbst zu vergleichen. Andernfalls wird die $role == 'administrator' Bedingung nie wahr sein.

function cv_add_role_caps() { 
    // Add the roles you'd like to administer the custom post types. 
    $roles = array('administrator', 'cv_member'); 

    // Loop through each role and assign capabilities. 
    foreach ($roles as $the_role) { 
     $role = get_role($the_role); 

     $role->add_cap('read'); 
     $role->add_cap('read_cv'); 
     $role->add_cap('edit_cv'); 
     $role->add_cap('edit_cvs'); 
     $role->add_cap('edit_published_cvs'); 
     $role->add_cap('publish_cvs'); 
     $role->add_cap('delete_published_cvs'); 

     if ('administrator' === $role->name) { // Accessing to the object's 'name' property. 
      $role->add_cap('read_private_cvs'); 
      $role->add_cap('edit_others_cvs'); 
      $role->add_cap('delete_others_cvs'); 
      $role->add_cap('delete_private_cvs'); 
     } 
    } 
} 
Verwandte Themen