Switch role on submit button

时间:2018-09-17 作者:bertrand74100

我在一个锦标赛网站上工作。注册后,您拥有“成员”角色,您可以创建一个CPT“团队”。

我创建了一个“TeamAdmin”角色,可以edit_published_posts, 例如,TeamAdmin可以更改团队名称。

我的问题是如何在提交按钮上切换角色,例如在团队的创建开关上,将角色开关切换到“TeamAdmin”?

2 个回复
SO网友:cjbj

确切的解决方案取决于您如何创建团队。你将不得不参与那场行动。假设创建一个团队是通过创建一个自定义类型“team”的帖子来完成的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中可能有多个角色。如果允许用户删除他们的团队,您可能还需要一个反向功能。

SO网友:bertrand74100

非常感谢,最后我这样做是为了更改表单提交上的状态:

wp\\U insert\\U post(团队\\U post);

    // Get the member ID
    $user_id = get_current_user_id();

    // Change his role to Team Admin
    wp_update_user([
        \'ID\' => $user_id,
        \'role\' => \'TeamAdmin\'
    ]);
我的新角色就是这样

类oArenaRole{公共函数\\uu构造(){

    $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

结束

相关推荐