繁体   English   中英

如何仅授予特定用户自定义帖子类型的访问权限

[英]how to give only access to custom post type for a particular user

在我的代码中,我有一个自定义职位类型的job。我创建了一个名为job manager的角色。现在,我想授予为job manager添加,编辑,删除职位的权限。只有他才能访问job post type.hoe w以实现此目的。 ....

我尝试通过以下代码创建作业经理角色

          function add_job_manager_role(){
           add_role(
                'job_manager',
                 'Job Manager',
                   array(
                    'read'          => true,
                    'edit_posts'    => false,
                    'delete_posts'  => false,
                    'publish_posts' => false,
                    'upload_files'  => true
           )
        );
     }
   add_action( 'admin_init', 'add_job_manager_role', 4 ); 

如何授予工作经理权限以添加,删除,编辑自定义帖子类型的工作

任何帮助表示赞赏。在此先感谢....

添加角色时,还必须添加功能,如下所示:

/**
add CPT capabilites to Role
*/
add_action('admin_init','o99_add_role_caps',999);

function o99_add_role_caps() {

    $role = get_role('my_role');      // ex. job_manager         
    $role->add_cap( 'read_my_CPT');
    $role->add_cap( 'edit_my_CPT' );
    $role->add_cap( 'edit_my_CPT' );
    $role->add_cap( 'edit_other_my_CPT' );
    $role->add_cap( 'edit_published_my_CPT' );
    $role->add_cap( 'publish_my_CPT' );
    $role->add_cap( 'read_private_my_CPT' );
    $role->add_cap( 'delete_my_CPT' );


}

my_CPT当然是您的自定义帖子类型,当您创建功能参数或对其进行修改时,您会执行以下操作:

function change_capabilities_of_CPT( $args, $post_type ){

 // Do not filter any other post type
 if ( 'my_CPT' !== $post_type ) { // my_CPT == Custom Post Type == 'job' or other

     // if other post_types return original arguments
     return $args;

 }


// This is the important part of the capabilities 
/// which you can also do on creation ( and not by filtering like in this example )


 // Change the capabilities of my_CPT post_type
 $args['capabilities'] = array(
            'edit_post' => 'edit_my_CPT',
            'edit_posts' => 'edit_my_CPT',
            'edit_others_posts' => 'edit_other_my_CPT',
            'publish_posts' => 'publish_my_CPT',
            'read_post' => 'read_my_CPT ',
            'read_private_posts' => 'read_private_my_CPT',
            'delete_post' => 'delete_my_CPT'
        );

  // Return the new arguments
  return $args;

}

编辑我

有关更多信息:

为了能够控制CPT,每个操作还涉及其他几种capabilities

仅举例来说,要发布publish_my_CPT并进行编辑,您将需要edit_my_CPT && edit_other_my_CPT && read_my_CPT && read_private_my_CPT等。 请查看法典中的功能,并在发布代码_my_CPT (例如_job或其他CPT)添加到这些功能中,从而使您能够获得所需的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM