最近在用这个主题,想加强一下推广功能。随手记录一下Ripro V5主题增加推广用户送会员功能,每满5人送一个月会员。

代码在ripro-v5/inc/template-admin.php中修改

// 用户注册时触发
public function register_hook_action($user_id) {

    //注册时写入推荐人ID 没有推荐人 并且当前推荐人不是自己则写入
    $ref_id = zb_get_site_current_aff_id($user_id);
    if (!empty($ref_id)) {
        update_user_meta($user_id, 'cao_ref_from', $ref_id);
        
        #给ref_id充会员
        # 1. 获取ref_id推荐人数
        # 2. 如果ref_id推荐人数>1 and ref_id推荐人数%5==0 加一个月会员
        $user_aff_info = ZB_Aff::get_user_aff_info($ref_id);
        $recommend_num = count($user_aff_info['ref_uids']);
        if (($recommend_num > 0) && ($recommend_num % 5 == 0)){
            $uc_vip_info = get_user_vip_data($ref_id);
            if ($uc_vip_info['type'] != 'boosvip') {
                $vip_buy_options = get_site_vip_buy_options();
                $vip_options = $vip_buy_options[30];
                $order_price = site_convert_amount($vip_options['coin_price'],'rmb');
                $order_type = 3;
                $order_info = array(
                    'ip' => get_ip_address(),
                    'vip_type' => $vip_options['type'],
                    'vip_day' => $vip_options['day_num'],
                );
                
                //添加订单入库
                $order_data = [
                    'user_id'        => $ref_id,
                    'post_id'        => 0,
                    'order_price'    => $order_price,
                    'order_trade_no' => wp_date("ymdhis") . mt_rand(100, 999) . mt_rand(100, 999) . mt_rand(100, 999), //本地订单号
                    'order_type'     => 3, //订单类型 1=>'Post',2=>'charge',3=>'VIP'
                    'pay_type'       => 88, //支付方式ID
                    'pay_price'      => $order_price,
                    'order_info'     => maybe_serialize($order_info),
                ];
        
                // 添加订单入库
                ZB_Shop::add_order($order_data);
                ZB_Shop::pay_notfiy_callback($order_data['order_trade_no'], sprintf('推广%d人,开通会员', $recommend_num));
            }
        }
        
    }
}