我正在开发一个插件,添加一个新的用户角色(例如客户端角色)。此角色目前仅扩展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
再次提升您的角色能力。这不一定不好,但可以预防:-)
代码参考: