Почему появилась эта статья?
Потому что изучение хелпа Roistat и Retalilcrm не поможет в сквозной интеграции с Woocommerce.
Итак, смотрим в настройки интеграции Roistat. Странно, но в источниках заказов мы не сможем выбрать Woocommerce. Почему-то он относится к CRM системам, а там может быть активной только одна система либо Woocommerce (странно что она считается CRM), или CRM Retailcrm (это действительно CRM).
Поэтому наиболее доступной интеграцией видится передача данных заказов из Woocommerce в Retailcrm, а далее в Roistat.
Вторую часть интеграции, а именно Retailcrm => Roistat мы можем реализовать с помощью инструкции https://help.roistat.com/integrations/CRM_i_CMS/retailCRM/
Первую часть интеграции Woocommerce => Retailcrm делаем по инструкции:
https://www.retailcrm.ru/marketplace/woocommerce
Вроде бы все хорошо – но это не решает проблему передачи кода ROISTAT из Wocommerce в Retailcrm. А нет такой передачи – нет передачи заказа из Retailcrm в Roistat.
Кроме кода счетчика Roistat размещаем в файле footer.php темы до закрывающего тега </body> код:
<script>
function getCookie(name) {
var cookie = " " + document.cookie;
var search = " " + name + "=";
var setStr = null;
var offset = 0;
var end = 0;
if (cookie.length > 0) {
offset = cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
end = cookie.indexOf(";", offset)
if (end == -1) {
end = cookie.length;
}
setStr = unescape(cookie.substring(offset, end)); //После отправки заявки из формы
}
}
return(setStr);
}
(function(d){
setTimeout(function(){
document.getElementsByName('roistat-promo-code')[0].value = getCookie('roistat_visit');
}, 1000);
})(document);
</script>
Далее настраиваем передачу заказов из Woocommerce в Retailcrm с помощью Интеграционный плагин для WooCommerce & Simla.com. Далее нужно осуществить передачу заказов в roistat. Сам roistat предлагает это решить с помощью кода:
$roistatVisitId = array_key_exists('roistat_visit', $_COOKIE) ? $_COOKIE['roistat_visit'] : "неизвестно";
в части получения данных, а вот как их передать в Retailcrm?
Есть ли уже готовый код передачи данных о визите в пользовательское поле crm (roistat)? И в каком файле плагина его разместить?
От техподдержки Retailcrm узнаем следующее:
Готовый код отсутствует.
Отправка заказа в систему происходит в файле class-wc-retailcrm-order.php
.
Выгрузка архива выполняется через class-wc-retailcrm-orders.php
.
Информация важная, но в нашем случае бесполезная.
И в последующей переписке узнаем важную информацию:
Если данные визита будут передаваться в поле заказа WooCommerce, то мы сможем передавать данные значения в пользовательское поле CRM.
Эта задача нам по силам:
Добавляем поле Roistat в заказ Woocommerce, разместив следующий код в файле активной темы functions.php
//roistat
add_action('woocommerce_after_order_notes', 'my_order_fields', 99);
function my_order_fields($checkout) {
echo '<div id="custom_checkout_field" style="display:none;">';
woocommerce_form_field( 'roistat-promo-code', array(
'type' => 'hidden',
'class' => array('form-row-wide'),
'label' => 'Роистат',
), $checkout->get_value( 'roistat-promo-code' ));
echo '</div>';
}
add_action( 'woocommerce_checkout_update_order_meta', 'true_save_field', 25 );
function true_save_field( $order_id ){
if( ! empty( $_POST[ 'roistat-promo-code' ] ) ) {
&nbsupdate_post_meta( $order_id, 'roistat-promo-code', sanitize_text_field( $_POST[ 'roistat-promo-code' ] ) );
}
}
В итоге в админке в Woocommerce / Заказы в заказах получим заполненное поле РОИСТАТ
Далее это поле нужно передать в Retailcrm, как оказалось это возможно сделать в рамках настроек плагина интеграции: Woocommerce / Интеграция/ Simla.com =>Пользовательские поля.
В принципе это всё, что нужно для того чтобы обеспечить передачу заказов с сайта на Wordpress и плагина магазина Woocommerce в Roistat через Retailcrm.