2

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

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

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

  • Reviewers分配给特定的机密文件可以读取它并将其标记为已批准
  • Readers分配给特定的分类文件只能读取它
  • 或者,当然,读者和审阅者无权访问除他们被允许查看的文件之外的其他机密文件。
  • Managers谁可以分配Reviewers和分配Readers机密文件
  • PluginAdmin谁可以分配Managers给机密文件

理想情况下,该解决方案应该适用于以下类型的高效请求:

  • 我想列出用户可以阅读的所有分类文件(无论是作为审阅者还是作为读者)。

至今 :

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

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

4

1 回答 1

1

分配角色并不是什么大问题,问题更多是关于在哪里以及如何存储信息的问题。

我决定这样做:

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

    'meta_query' => 数组(数组('key' => 'users', 'value' => '|' . $user_id . '|', 'compare' => 'LIKE' ))

  • 或使用一个组:

    'meta_query' => 数组(数组('key' => 'users', 'value' => $group . '|' . $user_id . '|', 'compare' => '=' ))

于 2012-12-09T14:12:53.807 回答