8ответ(ов) в теме
sergey.vitenko
не в сети 5 лет
На сайте с 15.08.2017
Участник
Тем 14
Сообщения 41
1
16:04

Подскажите пожалуйста, как связать данное дополнение с плагином Events&Places
А именно, что бы после того, как заказ на сайте был успешным и оплаченным, Партнеру начислялся его %.

0
Андрей CS
не в сети 2 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16938
2
18:05

Я посмотрел код плагина и как оказалось в нем нет автоматической регистрации пользователя при создании заказа, поэтому придется ее добавить сторонним кодом. Действуем в несколько шагов:

1. Правим код плагина. Открываем файл /events-and-places/class-save-order.php, и полностью заменяем метод insert_order на это:

function insert_order(){
        global $wpdb;
        
        $args = apply_filters('evpl_pre_insert_order', array(
            'user_data' => $this->user_data,
            'order_price' => $this->cart->price,
            'place_amount' => $this->cart->amount,
            'order_details' => serialize($this->details),
            'order_date' => current_time('mysql'),
            'order_status' => $this->order_status,
            'order_hash' => md5(current_time('mysql'))
        ));
        
        $result = $wpdb->insert(
            WP_PREFIX.'evpl_orders',
            $args
        );
        
        if(!$result)
            return false;
        
        return $wpdb->insert_id;
        
    }

2. Добавляем автоматическую регистрацию пользователя при создании заказа в файл функций используемой темы кодом:

add_filter('evpl_pre_insert_order', 'evpl_register_user');
function evpl_register_user($args){
    global $user_ID;

	if($user_ID) return $args;
    
	$user_email = sanitize_text_field($_POST['evpl_user_email']);

	$isEmail = is_email($user_email);
	
	if(!$isEmail || email_exists( $user_email ) || username_exists($user_email)){
		return $args;
	}

	$user_password = wp_generate_password( 12, false );

	$user_id = rcl_insert_user(array(
		'user_pass'=>   $user_password,
		'user_login'=>  $user_email,
		'user_email'=>  $user_email,
		'display_name'=>$user_email
	));

	if(!$user_id){
		return $args;
	}

	rcl_update_profile_fields($user_id);

	//Сразу авторизуем пользователя, если не требуется подтверждение почты
	if(!rcl_get_option('confirm_register_recall')){

		$creds = array(
			'user_login' => $user_email,
			'user_password' => $user_password,
			'remember' => true
		);

		wp_signon( $creds );

	}
	
	$args['user_data'] = $user_id;
	
	return $args;
	
}

3. Добавляем взаимодействие плагина с партнерской программой в файл функций темы:

add_action('evpl_payment_order','evpl_insert_partners_pay');
function evpl_insert_partners_pay($order_id){

	$order = evpl_get_order($order_id);
	
	if(!$order || !is_numeric($order->user_data) || !$order->order_price) return false;
	
	add_partner_incentive($order->user_data,$order->order_price);

}

Если все сделано правильно, то при создании нового заказа гостем он должен автоматически регистрироваться, соответственно партнерская программа должна будет учесть эту регистрацию при переходе по партнерской ссылке и в дальнейшую оплату созданного заказа как действие реферала.
Пробуйте.

0
sergey.vitenko
не в сети 5 лет
На сайте с 15.08.2017
Участник
Тем 14
Сообщения 41
3
20:47

Сделал все по инструкции, реферал регистрируется все хорошо. Но вот поощрения от реферала почему не работают...

Редакции сообщения
08.11.2017 22:45sergey.vitenkoПричина: не указано
08.11.2017 22:46sergey.vitenkoПричина: не указано
09.11.2017 09:53Андрей CSПричина: не указано
0
sergey.vitenko
не в сети 5 лет
На сайте с 15.08.2017
Участник
Тем 14
Сообщения 41
4
02:12

Разобрался, немного не там ставил %, извините за беспокойство и огромное спасибо за инструкцию! думаю это не только мне пригодится!

Но если рефералу не удалось оплатить, и если в админке выставить для заказа статус заказа с неоплаченного в оплачен, процент партнеру не начислится. Возможно сделать что бы процент начислялся после изменения заказа в вкладке заказа с "не оплачен" на "Оплачен"?

0
Андрей CS
не в сети 2 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16938
5
09:55

тогда надо код третьего шага заменить на этот:

add_action('evpl_update_order_status','evpl_insert_partners_pay',10,2);
function evpl_insert_partners_pay($order_id, $status){

	if($status != 2) return false;
	
	$order = evpl_get_order($order_id);
	
	if(!$order || !is_numeric($order->user_data) || !$order->order_price) return false;
	
	add_partner_incentive($order->user_data,$order->order_price);

}

0
sergey.vitenko
не в сети 5 лет
На сайте с 15.08.2017
Участник
Тем 14
Сообщения 41
6
11:47

Андрей CS сказал(а)
тогда надо код третьего шага заменить на этот:

add_action('evpl_update_order_status','evpl_insert_partners_pay',10,2);
function evpl_insert_partners_pay($order_id, $status){

	if($status != 2) return false;
	
	$order = evpl_get_order($order_id);
	
	if(!$order || !is_numeric($order->user_data) || !$order->order_price) return false;
	
	add_partner_incentive($order->user_data,$order->order_price);

}

После данного действия ссылка на партнерку в лк слетела и в админке появилась ошибка:

Add-on PARTNERS-SYSTEM has caused an error and was disabled. The error text:
Fatal Error: Call to undefined function rcl_get_user_balance() in /var/www/u0396846/data/www/es-cl.ru/wp-content/wp-recall/add-on/partners-system/classes/class-partners.php:127

0
Вова (Otshelnik-Fm)
не в сети 1 неделя
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
7
11:50

дополнение User balance (Личный счет) - должно быть активировано

0
sergey.vitenko
не в сети 5 лет
На сайте с 15.08.2017
Участник
Тем 14
Сообщения 41
8
11:57

Otshelnik-Fm сказал(а)
дополнение User balance (Личный счет) - должно быть активировано

Теперь все супер четко. Спасибо большое!

0
Тема закрыта. Публикация новых сообщений запрещена.