文章目录
本文最后更新于 2025-02-11,已超过 365 天未更新,内容可能已失效。

鉴于ripro-v5的会员系统,要么就是会员,要么就是永久会员。不管通过什么方式支付开通的会员,都可以通过下面代码实现补差价升级会员。 这个只有修改原主题代码。

  • 普通用户(no):所有套餐按原价显示。
  • VIP用户:仅当购买boosvip套餐时,计算差价(原价减去已支付金额),确保价格不低于0。
  • BoosVIP用户:保持原价,

教程开始

修改文件路径:ripro-v5\inc\template-shop.php 的165行。代码如下(注意是全部替换哟)

//获取网站会员开通套餐
function get_site_vip_buy_options() {
    $options = _cao('site_vip_buy_options', array());
    $buy_options = array();

    if (empty($options) && !is_array($buy_options)) {
        return $buy_options;
    }
    
    $site_vip_options = get_site_vip_options();

    foreach ($options as $item) {

        $title = (!empty($item['title'])) ? esc_html($item['title']) : false;
        $day_num = (!empty($item['daynum'])) ? absint($item['daynum']) : false;
        $coin_price = (!empty($item['price'])) ? abs(floatval($item['price'])) : false;
        $type = $site_vip_options['vip']['key'];
        $name = $site_vip_options['vip']['name'];
        $desc = $site_vip_options['vip']['desc'];
        $downnum = $site_vip_options['vip']['downnum'];

        //永久套餐
        if ($day_num==9999) {
            $type = $site_vip_options['boosvip']['key'];
            $name = $site_vip_options['boosvip']['name'];
            $desc = $site_vip_options['boosvip']['desc'];
            $downnum = $site_vip_options['boosvip']['downnum'];
        }

        if ($title && $day_num && $coin_price) {
            $buy_options[$day_num] = [
                'type'           => $type,
                'name'           => $name,
                'desc'           => $desc,
                'downnum'        => $downnum,
                'buy_title'      => $title,
                'day_num'        => $day_num,
                'coin_price'     => $coin_price,
            ];
        }
    }

    return $buy_options;
}

替换为下面的代码

[rihide]

function get_user_total_pay_price($user_id) {
    global $wpdb;

    $table_name = $wpdb->prefix . 'cao_order_tbl';

 
    $total_pay_price = $wpdb->get_var(
        $wpdb->prepare(
            "SELECT SUM(pay_price) 
             FROM $table_name 
             WHERE user_id = %d 
             AND order_type = 3 
             AND pay_status = 1",
            $user_id
        )
    );

    return $total_pay_price ? floatval($total_pay_price) : 0;
}

//获取网站会员开通套餐
function get_site_vip_buy_options() {
    global $current_user, $wpdb;
    
    $options = _cao('site_vip_buy_options', array());
    $buy_options = array();

    if (empty($options) || !is_array($options)) {
        return $buy_options;
    }
    
    $site_vip_options = get_site_vip_options();
    $user_type = get_user_vip_type($current_user->ID);
    $used_price = get_user_total_pay_price($current_user->ID);

    foreach ($options as $item) {
        $title = !empty($item['title']) ? esc_html($item['title']) : false;
        $day_num = !empty($item['daynum']) ? absint($item['daynum']) : false;
        $coin_price = !empty($item['price']) ? abs(floatval($item['price'])) : false;
        
        if (!$title || !$day_num || !$coin_price) {
            continue; // 跳过无效项
        }

        // 确定套餐类型
        $type = $site_vip_options['vip']['key'];
        $name = $site_vip_options['vip']['name'];
        $desc = $site_vip_options['vip']['desc'];
        $downnum = $site_vip_options['vip']['downnum'];
        
        if ($day_num == 9999) { // 永久套餐为boosvip
            $type = $site_vip_options['boosvip']['key'];
            $name = $site_vip_options['boosvip']['name'];
            $desc = $site_vip_options['boosvip']['desc'];
            $downnum = $site_vip_options['boosvip']['downnum'];
        }

        // 根据用户类型和套餐类型调整价格
        if ($user_type === 'vip' && $type === 'boosvip') {
            $coin_price -= $used_price;
            // 确保价格不为负数
            $coin_price = max($coin_price, 0);
        } elseif ($user_type === 'boosvip') {
            $coin_price;
        }
        // 普通用户无需调整价格

        $buy_options[$day_num] = array(
            'type' => $type,
            'name' => $name,
            'desc' => $desc,
            'downnum' => $downnum,
            'buy_title' => $title,
            'day_num' => $day_num,
            'coin_price' => $coin_price,
        );
    }

    return $buy_options;
}

[/rihide]

CC 许可协议
署名-非商业性使用-相同方式共享 4.0 国际 了解协议
文章链接:https://zptheme.com/7454.html
本文作者:子佩·来源:子佩工作室

除非注明,子佩工作室 文章均为原创,转载请以链接形式标明本文地址。

相关推荐

登录后即可发表评论

社交账号登录

全部评论 (5)