当 Paid Memberships Pro 设置会员等级时自动修改用户角色 (Roles)

什么是 WordPress 用户角色

WordPress默认内置了五种用户角色(Roles),级别由高到底分别是:

  1. Administrator(管理员)
  2. Editor(编辑)
  3. Author(作者)
  4. Contributor(贡献者或投稿者)
  5. Subscriber(订阅者)

这五种用户角色类型分别拥有不同的网站权限和作用,WordPress在安装完毕之后,会为各个用户角色分配默认的用户能力/权限,也共同构成了WordPress小巧却强大的用户系统。

Paid Memberships Pro 会员等级界面

会员等级是自己手动创建的,可设置任意等级时间与价格。

    请记住列表上 ID 所对应的 Name,也就是会员等级,当然,这些等级的名称是可以修改的

    IDName
    1Monthly Membership
    2Quarterly Membership
    3Annual Membership

    WordPress 用户中心界面

    这里可以看到用户角色(Role) 与 Membership Level 相同,这边需要完成的功能就是当 Membership Level 变更的时候,用户角色(Role) 也会跟着变更。这里就需要用到下面的代码。

    将下面的代码放进主题的 function.php 中

    
    function update_user_role_based_on_membership_level($level_id, $user_id) {
        // 获取用户对象
        $user = new WP_User($user_id);
    
        // 定义会员级别和对应的角色
        $membership_to_role = array(
            '1' => 'monthly_membership', // 将 '1' 替换为实际的 Monthly Membership ID
            '2' => 'quarterly_membership', // 将 '2' 替换为实际的 Quarterly Membership ID
            '3' => 'annual_membership', // 将 '3' 替换为实际的 Annual Membership ID
        );
    
        // 检查会员级别是否为空或存在于数组中
        if (empty($level_id)) {
            // 如果没有会员级别,将角色设置为 'Subscriber'
            $user->set_role('subscriber');
        } elseif (array_key_exists($level_id, $membership_to_role)) {
            // 移除所有现有角色
            foreach ($user->roles as $role) {
                $user->remove_role($role);
            }
            // 添加新角色
            $user->add_role($membership_to_role[$level_id]);
        }
    }
    add_action('pmpro_after_change_membership_level', 'update_user_role_based_on_membership_level', 10, 2);

    代码解析

    在这段代码中可以看到这样一段

            '1' => 'monthly_membership', // 将 '1' 替换为实际的 Monthly Membership ID
            '2' => 'quarterly_membership', // 将 '2' 替换为实际的 Quarterly Membership ID
            '3' => 'annual_membership', // 将 '3' 替换为实际的 Annual Membership ID

    这里的 1,2,3 分别对应的就是上面 Paid Memberships Pro 会员等级界面里面的 ID,而 monthly_membership,quarterly_membership,annual_membership 对应的用户中心的用户角色(Role),这里也可以将 monthly_membership 改为 subscriber,editor 等,但注意一定要使用小写。

    现在使用这段代码就可以当 Paid Memberships Pro 修改会员等级是同时修改 WordPress 的用户角色(Role) 了。

    常见问题
    123盘资源下载
    本站提供 123云盘 资源链接
    可无登入直接下载
    安全声明
    如文章内提供下载内容
    此内容可能为执行脚本,软件,图像或Ai模型
    所有内容均经过病毒查杀,可放心下载
    免责声明
    因模型可能包含 NSFW 内容,请不要将模型用于非法用途
    本站点只提供模型下载,不参与制作者图片生成
    因制作者生成图片造成的违法问题与本站无关
    0

    评论0

    没有账号?注册  忘记密码?