分享一个为网站所有用户批量将会员等级2设置为会员等级1的代码

今天因为我之前开启了钻石会员(二级会员)的功能,很多用户为此开通了这个会员,但是由于我后期关闭了二级会员功能,那么以前开通了二级会员的都会变为普通用户,这肯定是不行的,那么今天就给大家将二级会员批量转换成一级会员并且会员到期时间不变。

由于开通会员的用户非常多,后台一个个改会员等级太麻烦了

使用说明

  1. 将下面的代码直接复制粘贴到主题目录…/wp-content/themes/zibll/functions.php文件下面,保存文件
  2. 刷新网站就会自动执行函数,用户很多的话,可能会卡死,则按照下面注释改一下再刷新
  3. 进入后台检查一下,全部都完成后,一定要删除刚刚粘贴的代码

代码:

/**
 * 以下函数会将网站所有二级会员设置为一级会员
 * 刷新页面即可完成,完成后请删除以下代码
 *
 */
function zib_vip_update_level_for_specific_users()
{
    $target_level = 2; // 目标会员等级,也就是我们想要更新的用户当前的会员等级
    $new_level = 1; // 新的会员等级

    $args = array(
        'meta_key'   => 'vip_level', // 根据会员等级元字段筛选
        'meta_value' => $target_level, // 目标等级
        'orderby'    => 'ID',
        'order'      => 'ASC',
        'number'     => -1, // 全部符合条件的用户
        'fields'     => ['ID', 'display_name'],
    );

    $query = new WP_User_Query($args);

    if (!is_wp_error($query)) {
        $get_results = $query->get_results();
        if ($get_results) {
            echo '正在为特定等级用户更新VIP会员等级<br>';
            echo '目标会员等级:' . $target_level . '<br>';
            echo '新会员等级:' . $new_level . '<br><br><br>';
            foreach ($get_results as $user) {
                // 获取当前用户的到期时间
                $exp_date = get_user_meta($user->ID, 'vip_exp_date', true);
                
                // 更新会员等级
                update_user_meta($user->ID, 'vip_level', $new_level);
                
                // 如果需要,也可以在这里更新到期时间,但根据需求,我们保持到期时间不变
                // update_user_meta($user->ID, 'vip_exp_date', $exp_date);

                echo '用户' . $user->display_name . '的会员等级已更新为' . $new_level . '<br>';
            }

            echo '<br><br>操作完成,共计更新' . count($get_results) . '个用户<br>请删除代码';
        } else {
            echo '没有找到会员等级为' . $target_level . '的用户。<br>';
        }
    } else {
        echo '查询过程中出现错误。<br>';
    }

    exit;
}

// 执行函数
zib_vip_update_level_for_specific_users();

本文来自子比论坛

地址:https://www.zibll.com/forum-post/22654.html
THE END
点赞9赞赏 分享
抢沙发
头像
提交
头像

昵称

取消
昵称表情

    暂无评论内容