【问题标题】:How to setup simple User Roles for Wordpress Custom Post Type如何为 Wordpress 自定义帖子类型设置简单的用户角色
【发布时间】:2012-09-23 09:02:54
【问题描述】:

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

  • AGENT 用户可以创建编辑他自己的 EMPLOYEE,但不能编辑其他 AGENT 的 EMPLOYEE。
  • 所有代理、客户和公众都可以查看评论 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 和论坛上非常流行),但我希望我的要求足够简单,不再使用插件。这也有点太过分了。

帮助。提前致谢。

【问题讨论】:

  • 我建议一个插件,它已经够复杂了
  • 模组注意事项:这个问题更适合 WPSE。

标签: wordpress


【解决方案1】:

这真的应该不是很困难。

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

'capability_type' => 'post',

将其设置为其他内容,例如 'employee',并且根据 Codex,还将 'map_meta_cap' 设置为 true

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

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

【讨论】:

  • 感谢@Chip!我会努力解决这个问题,一旦我让它工作或遇到障碍,我会提醒你。再次感谢
  • 嗨@Chip 我正在处理我的这部分代码。所以'nuther问题,对不起,如果nobbish :D 我应该把我的add_role()电话放在哪里?在我的functions.php 创建帖子类型后?蒂亚
  • 我建议将它放入包含您的 register_post_type() 函数调用的同一个回调中。
  • @AnaBan 你能分享一些来自你的兼职系统的更多信息/代码吗?我正在开发一个受限制的参展商网站,管理员团队在其中创建所有参展商帐户,每个经过验证的参展商都可以预订产品和服务。问候
猜你喜欢
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-10
  • 2016-01-10
  • 2020-12-29
  • 1970-01-01
相关资源
最近更新 更多