如何为Wordpress自定义帖子类型设置简单的用户角色

时间:2012-04-18 09:12:09

标签: wordpress

我正在使用Wordpress处理临时/兼职的系统。为此,我正在制作一个新的自定义帖子类型EMPLOYEE,我需要2个相应的用户AGENT和CUSTOMER:

  • AGENT用户可以创建编辑他自己的员工,但不能编辑其他代理商的员工。
  • 所有代理人,客户和公众
  • 这也意味着CUSTOMER用户只能查看所有EMPLOYEE帖子。
  • CUSTOMER用户需要与普通公众区分开来,因为一旦他们雇用了员工,系统需要将他们与员工联系起来,因此需要CUSTOMER成为已登录的用户。
  • 最后,AGENT和CUSTOMER用户都可以创建/编辑他们自己的香草Wordpress用户个人资料,并使用他们的用户名/密码组合登录。

我如何执行此安排?关于用户和功能的在线文档让我拉扯我的头发并绕圈跑。到目前为止这是我的自定义帖子类型注册,我目前正在设置此帖子类型的其他信息的元框:

register_post_type( 'employee',
    array(
        'labels' => array(
            'name' => __('Employees','tdom'),
            'singular_name' => __('Employee','tdom'),
            'add_new' => __( 'Add New' ),
            'add_new_item' => __( 'Add New Employee' ),
            'edit' => __( 'Edit' ),
            'edit_item' => __( 'Edit Employee' ),
            'new_item' => __( 'New Employee' ),
            'view' => __( 'View Employee' ),
            'view_item' => __( 'View Employee' ),
            'search_items' => __( 'Search Employees' ),
            'not_found' => __( 'No Employees found' ),
            'not_found_in_trash' => __( 'No Employees found in Trash' ),
            'parent' => __( 'Parent Employee' )
        ),
        'public' => true,
        'show_ui' => true,
        'query_var' => true,
        'menu_icon' => get_stylesheet_directory_uri() . '/images/emp_icon.png',
        'menu_position' => 4,
        'capability_type' => 'post',
        'hierarchical' => false,
        'rewrite' => true,
        'supports' => array('title', 'thumbnail', 'author')
    )
);

我遇到过Justin Tadlock的Members插件(在Google和论坛上非常受欢迎),但我希望我的要求很简单,不再使用插件了。包裹我的头也有点太多了。

帮助。提前谢谢。

1 个答案:

答案 0 :(得分:4)

这真的不应该非常困难。

第一步是通过传递给register_post_type()'capability_type'参数创建自定义功能类型以对应您的自定义帖子类型。您使用的是默认值,即:

'capability_type' => 'post',

将其设置为其他内容,可能是'employee',并根据Codex,将'map_meta_cap'设置为true

'capability_type' => 'employee',
'map_meta_cap'    => true,

下一步是通过传递给add_role()$capabilities参数向自定义用户添加相关功能。对于“员工”用户角色,您需要添加edit_employee等(edit_,delete_等),对于“代理”用户角色,您需要添加edit_employee等人,以及edit_others_employee等人