Как настроить отправку ClientID Яндекс.Метрики в форму обратной связи на WordPress?

Здравствуйте! Поделитесь, пожалуйста, информацией о том, как можно реализовать отправку ClientID в форме обратной связи. У меня есть следующая форма обратной связи: 

<pre><code class="php">&lt;form class="form-modal-callback form form-v2"&gt;
    &lt;div class="form-modal-callback__inputs"&gt;
        &lt;input type="text" name="your-name" placeholder="Ваше имя" class="form__input"&gt;
        &lt;input type="tel" name="your-tel" placeholder="Номер телефона*" required class="form__input"&gt;
        &lt;input type="hidden" name="Ссылка на товар"&gt;
        &lt;input type="hidden" name="ClientID" value=""&gt;
    &lt;/div&gt;
    
    &lt;button class="form-modal-callback__button button button--big btnprof"  data-modal="modal-callback" type="submit" form-send&gt;
        Отправить
    &lt;/button&gt;

    &lt;p class="form-modal-callback__privacy form__privacy"&gt;
        Я подтверждаю, что ознакомлен с
        &lt;a href="&lt;?= get_site_url() . '/privacy-policy/'; ?&gt;" target="_blank"&gt;политикой конфеденциальности&lt;/a&gt;
    &lt;/p&gt;
&lt;/form&gt;</code></pre> 

Кроме того, вот мой бэкенд-код: 

<pre><code>jQuery(document).ready(function($) {
    $('input[type=tel]').inputmask({"mask": "+7 (999) 999-99-99"});

    window.formPhoneValidator = function (input) {
        let tempInput = input.toString().replaceAll(/[^0-9]+/g, '');
        return tempInput.length &gt; 10;
    }

    if ($(window).width() &lt;= '1025') {
        $('#mobile-menu li.has-childs &gt; a').on('click', function (e) {
            e.preventDefault();
            const parent  = $(this).parent();
            parent.find('ul.sub-menu').slideToggle();
        })
    }

    $('.header-main__search').on('click', function () {
        $('#burger-menu').click();
        $('#mobile-menu
```
  • 18 ноября 2024 г. 16:23
Ответы на вопрос 1
Для отправки ClientID Яндекс.Метрики в форму обратной связи на WordPress вам нужно выполнить несколько шагов. Это включает получение ClientID из Яндекс.Метрики на стороне клиента и добавление его в ваше поле формы перед отправкой. Давайте рассмотрим, как это сделать.

### Шаг 1: Получение ClientID из Яндекс.Метрики

Сначала вы должны получить ClientID, который хранится в cookie устройства. Вы можете использовать следующий JavaScript-код для этого:

```javascript
function getYaClientId() {
    const cookies = document.cookie.split(';');
    for (let i = 0; i < cookies.length; i++) {
        const cookiePair = cookies[i].trim().split('=');
        if (cookiePair[0] === '_ym_uid') {
            return cookiePair[1];
        }
    }
    return null;
}
```

### Шаг 2: Добавление ClientID в форму

После того, как вы получите ClientID, вы можете добавить его в скрытое поле вашей формы перед отправкой. Обновите ваш JavaScript код следующим образом:

```javascript
jQuery(document).ready(function($) {
    $('input[type=tel]').inputmask({"mask": "+7 (999) 999-99-99"});

    // Получаем ClientID
    const clientId = getYaClientId();
  
    // Устанавливаем ClientID в скрытое поле формы
    $('input[name="ClientID"]').val(clientId);

    // Остальной ваш код остается здесь

    // Пример: валидация телефона
    window.formPhoneValidator = function (input) {
        let tempInput = input.toString().replaceAll(/[^0-9]+/g, '');
        return tempInput.length > 10;
    }

    // Ваша логика меню для мобильных устройств
    if ($(window).width() <= '1025') {
        $('#mobile-menu li.has-childs > a').on('click', function (e) {
            e.preventDefault();
            const parent = $(this).parent();
            parent.find('ul.sub-menu').slideToggle();
        })
    }

    // Остальной код остался прежним
});
```

### Шаг 3: Обновите вашу форму

Убедитесь, что у вас есть скрытое поле для ClientID, как у вас уже прописано в HTML-коде формы:

```html
<input type="hidden" name="ClientID" value="">
```

### Шаг 4: Проверка на сервере

На бэкенде вам следует убедиться, что вы обрабатываете полученное значение ClientID при отправке формы. Проверьте, правильно ли оно приходит, например, так:

```php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $clientId = isset($_POST['ClientID']) ? sanitize_text_field($_POST['ClientID']) : '';

    // Здесь вы можете использовать $clientId для дальнейшей обработки
}
```

Таким образом, вы успешно получите ClientID из Яндекс.Метрики и добавите его в форму обратной связи на вашем сайте WordPress.
Похожие вопросы