WordPress и CRM-системы

7423794c22801a9cdf9e14becdaeda9f

Всем привет! Не буду тратить время на лишние вводные слова, а сразу перейду к сути. В этой небольшой статье я поделюсь своим опытом интеграции WordPress с CRM-системами.

Часто клиенты хотят, чтобы данные, собранные с контактных форм, автоматически отправлялись в их CRM. Так как же реализовать это в WordPress? Давайте разберемся.

Лично мне встречались три типа форм, которые используются в WordPress: формы, созданные с помощью плагина Contact Form 7, формы, разработанные в Elementor, и самописные формы, работающие на AJAX. И ещередких случаях бывает взаимодействие с WooCommerce.

Сontact Form 7

get_posted_data();  // Получаем данные формы

        // Доступ к данным формы
        $name = isset($data['your-name']) ? $data['your-name'] : '';  // Замените 'your-name' на имя вашего поля
        $email = isset($data['your-email']) ? $data['your-email'] : ''; // Замените 'your-email' на имя вашего поля

        // Отправка данных на внешний сервис
        $response = wp_remote_post('https://example.com/api', array(
            'method'    => 'POST',
            'body'      => json_encode(array(
                'name' => $name,
                'email' => $email,
            )),
            'headers'   => array(
                'Content-Type' => 'application/json',
            ),
        ));

        // Проверка ответа
        if (is_wp_error($response)) {
            // Обработка ошибки
            error_log('Ошибка отправки данных на внешний сервис: ' . $response->get_error_message());
        } else {
            // Обработка успешного ответа
            error_log('Данные успешно отправлены на внешний сервис');
        }
    }
}

Тут все просто. Мы перехватываем POST данные через хук wpcf7_before_send_mail.

Мы можем проанализировать что конкретно отправляется в форме и подставить свои значения.

Elementor

get( 'fields' );

    // Форматируем данные для отправки
    $data_to_send = [];
    foreach ( $raw_data as $key => $value ) {
        // Здесь вы можете добавить фильтрацию или проверку
        $data_to_send[$key] = sanitize_text_field($value);
    }

    // Теперь отправьте данные на ваш сервис статистики
    $response = wp_remote_post('https://your-stats-service.com/api/endpoint', [
        'method'    => 'POST',
        'body'      => json_encode($data_to_send),
        'headers'   => [
            'Content-Type' => 'application/json',
        ],
    ]);

    // Обработка ответа
    if ( is_wp_error( $response ) ) {
        // Логирование ошибки или другие действия
    } else {
        // Данные успешно отправлены
    }

    // Сохраняем данные в сессии или делаем другие операции, если нужно

}, 10, 2 );

Тут примерно тоже самое что и первом варианте.

Elementor предоставляет хук elementor_pro/forms/new_record, который позволяет вам перехватывать данные формы сразу после их отправки, но перед тем, как они будут обработаны. Вы можете использовать этот хук в вашем файле functions.php вашей темы.

WordPress и AJAX

 'Данные успешно отправлены!'));
}

Тут я показал типичный пример использования AJAX в WP. Нечто подобное нужно найди в коде проекта. Можно искать по ключевому слову 'wp_ajax_'. И уже по ситуации использовать код который будет отвечать за отправку данныхв CRM.

WooCommerce

Иногда возникают ситуации, когда необходимо отправить данные сразу после завершения заказа.

get_billing_first_name() . ' ' . $order->get_billing_last_name();
    $phone = $order->get_billing_phone();
    $email = $order->get_billing_email();
    
    // Отправка данных на внешний сервис
        $response = wp_remote_post('https://example.com/api', array(
            'method'    => 'POST',
            'body'      => json_encode(array(
                'name' => $name,
                'phone' => $phone
                'email' => $email,
            )),
            'headers'   => array(
                'Content-Type' => 'application/json',
            ),
        ));

        // Проверка ответа
        if (is_wp_error($response)) {
            // Обработка ошибки
            error_log('Ошибка отправки данных на внешний сервис: ' . $response->get_error_message());
        } else {
            // Обработка успешного ответа
            error_log('Данные успешно отправлены на внешний сервис');
        }
}

Хук woocommerce_thankyou является частью системы хуков в WooCommerce и позволяет разработчикам выполнять определенные действия в момент, когда пользователь завершает покупку и видит страницу благодарности (Thank You page) после оформления заказа.

Если у вас есть вопросы или ваш собственный опыт в этом вопросе, делитесь в комментариях! Спасибо за внимание!

© Habrahabr.ru