本文最后更新于 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]
除非注明,子佩工作室 文章均为原创,转载请以链接形式标明本文地址。



登录后即可发表评论
全部评论 (5)
有的人生来就不需要任何原谅,因为他们不论有多少次机会都没点改进。
顺风适合行走,逆风更适合飞翔。
只有坚持不断努力,才能进步。
人生便是一只风筝,只有努力向上飞的那只,才能成为天之骄子。
只有坚持不断努力,才能进步。