有没有一种简单的方法来管理每个用户的功能?

时间:2014-02-14 作者:Christoph

我有一个WordPress网站,一些人(非专家客户)需要创建/管理用户。该网站使用多种自定义帖子类型,并为每个用户分配了一个或多个cpt的权限。目前我看到了两种处理方法,我对其中任何一种都不太满意。

(1) User roles:如果我有四种自定义帖子类型(A、B、C、D),那么我需要很多用户角色来覆盖所有功能组合。(角色A、角色AB、角色ABD…)。这对客户的管理不是很方便。

(2) Capability Management Plugin: 如果是我来管理用户,我会使用“用户角色编辑器”之类的插件。但是,对于我的非专家客户来说,这是一个相当复杂的问题,而且破坏系统的风险很高。

我想到的是要有简单的复选框(至少在创建新用户时),客户机可以在其中选择新用户应该能够访问的自定义帖子类型。比如:这个用户可以用cpt A、B和D做任何事情。

有没有办法做到这一点,这是不是你应该用WordPress做的?

RyanLoremIpsum为我指明了正确的方向,因此我能够编写一个尽可能简单的插件。看起来像这样:

choose the cpt's a user should be able to access

1 个回复
最合适的回答,由SO网友:iyrin 整理而成

您不必分配角色来管理用户的功能。

首先,用各自的功能注册自定义帖子类型。请参见下面的功能Function Reference/register post type - Parameters

管理用户功能,您可以使用add_capremove_cap 为特定用户添加或删除用户功能。

// Add capability to a specific user  
$user = new WP_User( $user_id );  
$user->add_cap( \'can_edit_posts\');  

// Remove a capability from a specific user.
$user = new WP_User( $user_id );
$user->remove_cap( \'read_private_posts\' );
这很方便,因为它允许您授予不属于用户指定角色的用户功能。

例如,您可以创建一个表单,其中每个帖子类型都有复选框,如您所说。对于选中的每个框,它将授予给定的用户ID您在注册该帖子类型时创建的功能。同样,取消选中方框可能会删除这些功能。

结束

相关推荐

users and usermeta table

每个用户在usermeta表中也必须有条目,还是可选的?最近,我遇到了一个wordpress数据库,它在用户表中有数千个用户,但只有少数用户在usermeta表中有条目。我想知道在什么情况下会发生这种情况,因为这些条目看起来不像是手动从数据库中删除的。