Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何仅为特定用户提供自定义帖子类型的访问权限_Php_Wordpress_Arguments_Roles_Wordpress Capabilities - Fatal编程技术网

Php 如何仅为特定用户提供自定义帖子类型的访问权限

Php 如何仅为特定用户提供自定义帖子类型的访问权限,php,wordpress,arguments,roles,wordpress-capabilities,Php,Wordpress,Arguments,Roles,Wordpress Capabilities,在我的代码中,我有一个自定义的职位类型作业。我创建了一个名为“职务经理”的角色。现在,我想为职务经理授予添加、编辑和删除作业的权限。只有他才能访问job post type.hoe w来实现这一点 我试图通过以下代码创建job manager角色 function add_job_manager_role(){ add_role( 'job_manager', 'Job Manager',

在我的代码中,我有一个自定义的职位类型作业。我创建了一个名为“职务经理”的角色。现在,我想为职务经理授予添加、编辑和删除作业的权限。只有他才能访问job post type.hoe w来实现这一点

我试图通过以下代码创建job manager角色

          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,每项操作都涉及若干其他功能


例如,为了
发布我的CPT
和编辑,您需要
编辑我的CPT
&
编辑其他我的CPT
&
读取我的CPT
&
读取我的CPT
等等。请查看发布的代码,您可以将
\u my\u CPT
(例如-
\u job
或任何CPT)添加到这些功能中,从而实现所需的结果。

您已经添加了一个角色-因此请给他编辑该帖子类型的功能,基本上:遵循以下指南:另外,如果你想轻松管理角色,你可以使用members插件,这正是你想要的。我已经有帖子类型作业。我只想授予该帖子类型的权限。还必须注册帖子类型吗?我没有从使用上述代码获得权限。我想工作经理只能添加,编辑,删除工作职位类型如何做到这一点我并没有得到从使用上述代码。我想工作经理只能添加,编辑,删除职位类型如何做到这一点在代码张贴你有所有的权限,你可以随时筛选你想要的。您需要了解
add
例如是
publish
read
,当然您也需要这样做。