Вступ
У цьому посібнику ми розглянемо, як умовно передавати кастомні поля до KeyCRM на основі стану чекбокса, встановленого на сторінці оформлення замовлення у WooCommerce. У випадку, коли клієнт не хоче отримувати дзвінки, ми будемо передавати певні додаткові дані в KeyCRM лише, якщо чекбокс “Не дзвонити мені” активований.

Крок 1:

Додавання чекбокса на сторінку оформлення замовлення

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

Код для додавання в functions.php дочірньої теми

Вставте цей код у файл functions.php вашої дочірньої теми:

// Додаємо чекбокс "Не телефонуйте мені" на сторінку оформлення замовлення add_action( 'woocommerce_review_order_before_submit', 'wcsuccess_add_custom_checkout_field' ); function wcsuccess_add_custom_checkout_field( $checkout ) { woocommerce_form_field( ‘not_call_back’, array( // CSS ID ‘type’ => ‘checkbox’, ‘class’ => array(‘form-row mycheckbox’), // CSS Class ‘label_class’ => array(‘woocommerce-form__label woocommerce-form__label-for-checkbox checkbox’), ‘input_class’ => array(‘woocommerce-form__input woocommerce-form__input-checkbox input-checkbox’), ‘required’ => false, // Mandatory or Optional ‘label’ => ‘Не телефонуйте мені, я впевнений(на) в замовленні’, )); }

Крок 2:

Збереження значення чекбокса у метаданих замовлення

Коли користувач оформляє замовлення і вибирає цю опцію, ми повинні зберегти значення чекбокса в метаполях замовлення.

// Зберігаємо значення чекбокса в метаполях замовлення add_action( 'woocommerce_checkout_update_order_meta', 'wcsuccess_save_new_checkout_field' ); function wcsuccess_save_new_checkout_field( $order_id ) { // Тільки якщо чекбокс активний if ( ! empty( $_POST['not_call_back'] ) ) { $value = isset($_POST['not_call_back']) ? 'yes' : 'no'; update_post_meta( $order_id, 'not_call_back', sanitize_text_field( $value ) ); } }
// Відображаємо значення чекбокса в адмінці WooCommerce add_action( 'woocommerce_admin_order_data_after_billing_address', 'wcsuccess_show_new_checkout_field_order' ); function wcsuccess_show_new_checkout_field_order( $order ) { $order_id = $order->get_id(); if ( get_post_meta( $order_id, 'not_call_back', true ) ) echo '

НЕ дзвонити мені: ' . get_post_meta( $order_id, 'not_call_back', true ) . '

'; }
// Додаємо значення чекбокса в листи підтвердження замовлення add_action( 'woocommerce_email_after_order_table', 'wcsuccess_show_new_checkout_field_emails', 20, 4 ); function wcsuccess_show_new_checkout_field_emails( $order, $sent_to_admin, $plain_text, $email ) { if ( get_post_meta( $order->get_id(), 'not_call_back', true ) ) echo '

Не дзвонити мені: ' . get_post_meta( $order->get_id(), 'not_call_back', true ) . '

'; }

Пояснення коду

  • Додавання чекбокса: Використовується хук woocommerce_review_order_before_submit для відображення чекбокса на сторінці оформлення замовлення.
  • Збереження значення: Значення чекбокса зберігається в метаполях замовлення при оформленні.
  • Відображення в адмінці: В адмін-панелі WooCommerce показується статус опції “Не телефонуйте мені” для кожного замовлення.
  • Додавання в листи: Значення чекбокса також відображається в листах замовлення, що відправляються адміністратору та клієнту.

Цей код дозволяє легко інтегрувати чекбокс “Не телефонуйте мені” в процес оформлення замовлення і автоматично обробляти цю інформацію.

Крок 3:

Додавання кастомних полів до KeyCRM

Тепер, коли значення чекбокса збережено, ми можемо додавати кастомні поля до запиту, який відправляється в KeyCRM. Проте, ми будемо передавати ці дані тільки в тому випадку, якщо клієнт вибрав опцію “Не дзвонити мені”.


// Умовне додавання custom_fields
'custom_fields' => (get_post_meta($wcOrder->get_id(), 'not_call_back', true) === 'yes') ? [
[
'uuid' => 'OR_1017',
'value' => $order['externalId']
]
] : [],

  1. Пояснення коду

    1. Перевірка чекбокса: Ми отримуємо значення метаполя not_call_back, яке містить стан чекбокса “Не дзвонити мені”. Якщо значення є 'yes', це означає, що чекбокс був активований.
    2. Умовне додавання кастомних полів: Якщо клієнт вибрав опцію “Не дзвонити мені”, ми додаємо кастомні поля до масиву замовлення ('custom_fields'). Якщо ж чекбокс не був активований, цей блок не додається.

Крок 4: Тестування та перевірка
Після внесення змін в код необхідно перевірити, чи передаються кастомні поля в KeyCRM лише в тому випадку, якщо клієнт вибрав опцію “Не дзвонити мені”. Ви можете додати логування для перевірки, чи працює перевірка:

WC_Keycrm_Logger::add(sprintf("not_call_back value: %s", $not_call_back));
Це дозволить вам побачити значення чекбокса і перевірити, чи правильно працює умовна логіка.

Висновок

За допомогою цього підходу ви можете умовно передавати кастомні поля в KeyCRM на основі значення чекбокса у WooCommerce. Це дає можливість гнучко обробляти дані клієнтів та оптимізувати процес інтеграції з CRM.

Найсильніша мотивація для життя і спортуWeb developer

Найсильніша мотивація для життя і спорту

hukserhiihukserhiiЖов 2024
Как перевести бизнес в онлайн – Павлов Максим (Onpage)Web developer

Как перевести бизнес в онлайн – Павлов Максим (Onpage)

hukserhiihukserhiiВер 2024
Код свідомостіWeb developer

Код свідомості

hukserhiihukserhiiЖов 2024