FLAMIX.SOFTWARE

Добавление дополнительных полей

— Оцените первым

Video "Добавление дополнительных полей"

В плагине доступно несколько способов добавления дополнительных полей. Рассмотрим пример добавления кастомных полей на WordPress. Остальные CMS имеют аналогичный функционал (название фильтров или хуков ищите в документации плагина для нужной CMS). Данна инструкция предназначена для веб-мастеров.

Универсальный способ

Данный способ хорош тем, что он построен на базе SDK и не имеет привязки к CMS и применяется при любой отправки. Для примера, давайте рассмотрим задачу, где при отправке любой формы или заказа нужно всегда добавлять HTTP_REFERER, SITE_DOMAIN и Google Client ID без GA. Минус этого способа - он отрабатывает до момента получения всех полей, т.е. фактически вы не будуте знать какие поля у вас передаются. Если это WordPress, то первой и стабильной точкой входа любого файла есть functions.php. Для решения этой задачи добавляем такой код в файл functions.php:

try {
	$flamix_extra_fields = [
		'HTTP_REFERER' => $_SERVER['HTTP_REFERER'] ?? '',
                'SITE_DOMAIN' => 'mysite.com',
	];

	$cookie_ids = \Flamix\Conversions\Conversion::getFromCookie();
	if(!empty($cookie_ids) && isset($cookie_ids['_ga']))
		$flamix_extra_fields['google_client_id'] = preg_replace('/GA[0-9].[0-9]./', '', $cookie_ids['_ga']);

    \Flamix\Bitrix24\Lead::getInstance()->setExtraFields($flamix_extra_fields);
    unset($cookie_ids, $flamix_extra_fields);
} catch (\Exception $e) {
    //$e->getMessage();
}

Фильтры WordPress

При необходимости изменять поля заявки или товары используя созданные ранее поля (например, номер заказ, имя клиента и т.д.) необходимо воспользоваться фильтрами. Фильтры размещаем в файле functions.php. Доступные такие фильтра:

  • flamix_bitrix24_integrations_fields_filter $fields
  • flamix_bitrix24_integrations_product_filter $products, $order_id
  • flamix_bitrix24_integrations_filter $data

Обратите внимание! Фильтры универсальные для всех WordPress плагинов! Это значит, что если вы будете менять поля с помощью flamix_bitrix24_integrations_fields_filter, то фильтр будет применен как для модуля WooCommerce, так и для Contact Form 7 или Ninja Form. Данное ограничение обязывает вас не быть на 100% уверенным что некоторые из входящих параметром точно будут. Например, ORDER_ID будет только в WooCommerce. Пример реализации задачи добавления название для Лида с нужной информацией:

function flamix_bitrix24_integrations_fields_example_callback($fields) {
    if(isset($fields['ORDER_ID']) && $fields['ORDER_ID'] > 0)
        $fields['MY_BITRIX24_LEAD_TITLE'] = 'Order #' . ($fields['ORDER_ID'] ?? 0) . ' from wp.app.flamix.solutions at ' . ($fields['DATE'] ?? date('Y-m-d H:m:s'));
    else 
        $fields['MY_BITRIX24_LEAD_TITLE'] = 'Request from wp.app.flamix.solutions at ' . ($fields['DATE'] ?? date('Y-m-d H:m:s'));

        return $fields;
}
add_filter( 'flamix_bitrix24_integrations_fields_filter', 'flamix_bitrix24_integrations_fields_example_callback', 10, 3 );