我在一个锦标赛网站上工作。当你注册时,你有一个角色“成员”,你可以创建一个CPT“团队”。
我创建了一个" TeamAdmin“角色,其功能为edit_published_posts,例如,TeamAdmin可以更改团队名称。
我的问题是如何在submit按钮上切换角色,例如在团队创建时将角色切换到"TeamAdmin"?
发布于 2018-09-17 08:47:45
确切的解决方案取决于您如何创建一个团队。你得参与到那个行动中去。假设创建团队是通过创建自定义类型" team“的post来完成的,那么您将链接到save_post_team,导致如下所示:
add_action ('save_post_team', 'wpse314398_change_team_captain_role', 10, 3);
function wpse314398_change_team_captain_role ($post_id, $post, $update) {
$current_user = wp_get_current_user();
$current_user->remove_role ('Member');
$current_user->add_role ('TeamAdmin');
}您还可以保留成员角色,因为用户在WordPress中可能有多个角色。如果允许用户删除他们的团队,您也可能希望拥有一个反向函数。
发布于 2018-09-17 10:44:55
非常感谢,最后我在提交的表单上修改了状态:
wp_insert_post($team_post);//获取成员ID $user_id = get_current_user_id();//将其角色更改为Team wp_update_user();
我的新角色就是这样
类oArenaRole {公共函数__construct() {
$this->addCap();
}
public function addRole()
{
// Create new role for Admin Team
add_role('TeamAdmin', 'Administrateur de la team', [
'read' => true,
'edit_published_posts' => true,
]);
}
public function addCap()
{
$role = get_role('Team Admin');
}
public function removeRole()
{
remove_role('TeamAdmin');
}
public function activation()
{
$this->addRole();
$this->addCap();
}
public function deactivation()
{
$this->removeRole();
}}
提交状态更改,但TeamAdmin不可能编辑已发布的CPT
https://wordpress.stackexchange.com/questions/314398
复制相似问题