我正在开发一个插件,添加一个新的用户角色(例如客户端角色)。此角色目前仅扩展admin角色。
add_role(
    \'client\',
    __(\'Client\'),
    get_role(\'administrator\')->capabilities
);
 现在我不想发布插件的新版本来更新客户端功能并删除
install_plugins 能力。
角色是持久的,所以我不能只更新add_role.
My question is: 如何管理自定义角色,更新其功能?
 
                    最合适的回答,由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 再次提升您的角色能力。这不一定不好,但可以预防:-)
代码参考: