Update User Role

时间:2018-01-15 作者:Maxwell s.c

我正在开发一个插件,添加一个新的用户角色(例如客户端角色)。此角色目前仅扩展admin角色。

add_role(
    \'client\',
    __(\'Client\'),
    get_role(\'administrator\')->capabilities
);
现在我不想发布插件的新版本来更新客户端功能并删除install_plugins 能力。

角色是持久的,所以我不能只更新add_role.

My question is: 如何管理自定义角色,更新其功能?

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

在我的脑海中,你应该可以做这样的事情:

$role = get_role( \'client\' );

if ( $role && $role->has_cap( \'install_plugins\' ) ) {
  // Role not updated yet, so update it.
  $role->remove_cap( \'install_plugins\' );
}
get_role() 返回一个WP_Role 成功时对象,以及WP_Role::remove_cap() 呼叫WP_Roles::remove_cap(), 直接更新数据库中的选项。这个$role->has_cap() 检查确保代码不会运行两次。

在连接到的函数中运行此init 应该足够了。

理想的情况是database version option 对于您的插件,您可以使用它在每次插件更新时只运行一次代码。否则,每当有人手动添加install_plugins 再次提升您的角色能力。这不一定不好,但可以预防:-)

代码参考:

结束