7

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

  • AGENT 用户可以创建编辑他自己的 EMPLOYEE(s),但不能编辑其他 AGENT(s) 的 EMPLOYEE(s)。
  • 所有代理商、客户和公众都可以查看评论EMPLOYEE 帖子,
  • 这也意味着 CUSTOMER 用户只能查看所有 EMPLOYEE 帖子。
  • CUSTOMER 用户需要与普通大众区分开来,因为一旦他们雇用了 EMPLOYEE,系统需要将他们与 EMPLOYEE 关联起来,因此 CUSTOMER 需要成为登录用户。
  • 最后,AGENT 和 CUSTOMER 用户都可以创建/编辑他们自己的 vanilla 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 和论坛上非常流行),但我希望我的要求足够简单,不再使用插件。我的头也有点太多了。

帮助。提前致谢。

4

1 回答 1

4

这真的不应该是非常困难的。

第一步是通过传递'capability_type'register_post_type(). 您使用的是默认值,即:

'capability_type' => 'post',

将其设置为其他值,也许'employee',并且根据 Codex,也设置'map_meta_cap'true

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

下一步是通过$capabilities传递给您的调用的参数向您的自定义用户添加相关功能add_role()。对于“员工”用户角色,您需要添加edit_employeeet al(edit_、delete_ 等),对于“代理”用户角色,您需要包括edit_employeeet al 和edit_others_employeeet al。

于 2012-04-18T15:26:52.323 回答