在WordPress中为用户分配特定于帖子的角色

时间:2012-11-30 08:54:29

标签: wordpress wordpress-plugin

我正在设计一个需要将用户分配到特定帖子(自定义类型)的插件。

例如,我有一个自定义帖子类型:ClassifiedFile

对于那种类型的帖子,我需要在界面中的某个位置为用户分配,每个用户都有不同的功能。在这种情况下,可能是:

    分配给特定分类文件的
  • Reviewers可以将其读取并标记为已批准
  • 分配给特定分类文件的
  • Readers只能读取它
  • 当然,读者和审稿人无权访问其他机密文件,而不能访问他们看到的文件。
  • Managers可以将ReviewersReaders分配给机密文件
  • PluginAdmin谁可以将Managers分配给机密文件

理想情况下,解决方案应该提供类型的有效请求:

  • 我想列出用户可以阅读的所有机密文件(无论是评论者还是阅读者)。

到目前为止:

  • 我在帖子的元数据中存储了一些特定的属性(例如批准状态)。
  • 我创建了自定义功能:“plugin-admin”,“manage-file-users”,“approve-file”和“read-file”
  • 我为此提供了两个自定义角色:文件组管理器(“插件管理员”),文件组管理器(“管理用户”),文件审阅者(“批准文件”,“读取文件”)和文件读者(“读文件”)

我必须说我正在努力寻找一种很好的方法来解决每个分类文件的列表和存储特权。理想情况下,我想避免创建一个单独的数据库表,但如果这样做,那么我会这样做。

1 个答案:

答案 0 :(得分:1)

分配角色并不是一个问题,问题更多的是存储信息的位置和方式。

我决定这样做:

  • 我定义了所有ClassifiedFile
  • 共有的组(实际上是WP_Role对象)
  • 对于每个ClassifiedFile,我存储一个元值,它是一个包含用户角色和id的字符串数组。例如:[ reviewer|50|, reader|123|, reader|13| ]
  • 然后,我可以使用以下条件查询特定用户的所有ClassifiedFile

    'meta_query'=>数组(数组(     'key'=> “用户”,     'value'=> '|' 。 $ user_id。 '|',     'compare'=> '喜欢' ))

  • 或使用小组:

    'meta_query'=>数组(数组(     'key'=> “用户”,     'value'=> $ group。 '|' 。 $ user_id。 '|',     'compare'=> '=' ))

相关问题