Contact form 7 — Как отправить Да, если чекбокс выбран и Нет, если чекбокс не выбран?

Ссылка скопирована
1 ответ

Использовал такой способ

[checkbox your-checkbox use_label_element "Нужна ли консультация по программе?|Да"]

[checkbox your-checkbox use_label_element "Нужна ли консультация по программе?|Да"]

в таком случае, если чекбокс выбран на почту приходит "Да", если не выбран приходит [your-checkbox]. Как решить данную проблему?

Дополнительные вопросы

А просто не отправлять пустые поля - не вариант?

  • Refguser, если вы имеете ввиду поставить галочку "Исключить вывод строк с пустыми тегами сообщения", то поле все равно отправляется, т.к. checkbox пустым не является
  • Contact form 7 — Как отправить Да, если чекбокс выбран и Нет, если чекбокс не выбран?

    Дмитрий @pro100taa Как вариант, можете попробовать радиокнопками реализовать. При открытии формы по умолчанию стоит Нет. Этот вариант можете попробовать скрыть стилями. Он и отправится если клиент ничего не выберет. А в случае выбора "Да" отправите "Да".

    • Я создал скрытое поле и в него передал нужное значение:
      checkbox.addEventListener('change', function () {   if (this.checked) {     document.querySelector('#callback-moscow-city input[name="admin-checkbox"]').value = 'Да'   } else {     document.querySelector('#callback-moscow-city input[name="admin-checkbox"]').value = 'Нет'   } })

      checkbox.addEventListener('change', function () { if (this.checked) { document.querySelector('#callback-moscow-city input[name="admin-checkbox"]').value = 'Да' } else { document.querySelector('#callback-moscow-city input[name="admin-checkbox"]').value = 'Нет' } })

    • webl2m, Тип не чекбокс, а radio https://contactform7.com/checkboxes-radio-buttons-...

      На мой взгляд, так проще будет. Radio может принимать значение даже если человек ничего не выбрал. И в тоже время допускается только выбор одного значения. Если человек выберет "Да", то "Нет" автоматом снимается.

    Ответы:

    Как-то так:

    Нужна ли консультация по программе? [checkbox* your-checkbox use_label_element exclusive default:1 "Да" "Нет"]

    Нужна ли консультация по программе? [checkbox* your-checkbox use_label_element exclusive default:1 "Да" "Нет"]

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Анна SEO Ответ

    В Contact Form 7 unchecked checkbox действительно может давать пустое значение, а в письме иногда остаётся тег вида [your-checkbox], если поле не подставилось. Надёжнее решить это через pipe + дополнительную обработку или через скрытое поле со значением по умолчанию.

    Самый простой вариант в письме: не пытаться выводить сам checkbox как «Да/Нет», а сделать формулировку так, чтобы пустота была понятной. Но если нужно строго «Да» или «Нет», используйте фильтр перед отправкой письма.

    Форма:

    [checkbox your-checkbox use_label_element "Нужна консультация"]

    [checkbox your-checkbox use_label_element "Нужна консультация"]

    Код:

    add_filter('wpcf7_mail_components', function ($components, $contact_form, $mail) {
        $submission = WPCF7_Submission::get_instance();
        if (! $submission) {
            return $components;
        }
     
        $data = $submission->get_posted_data();
        $value = ! empty($data['your-checkbox']) ? 'Да' : 'Нет';
     
        $components['body'] = str_replace('[your-checkbox-yesno]', $value, $components['body']);
     
        return $components;
    }, 10, 3);

    add_filter('wpcf7_mail_components', function ($components, $contact_form, $mail) { $submission = WPCF7_Submission::get_instance(); if (! $submission) { return $components; } $data = $submission->get_posted_data(); $value = ! empty($data['your-checkbox']) ? 'Да' : 'Нет'; $components['body'] = str_replace('[your-checkbox-yesno]', $value, $components['body']); return $components; }, 10, 3);

    В шаблоне письма используйте не [your-checkbox], а свой маркер:

    Нужна консультация: [your-checkbox-yesno]

    Нужна консультация: [your-checkbox-yesno]

    Так вы полностью контролируете вывод.

    Альтернатива без кода — использовать radio:

    [radio consultation use_label_element default:2 "Да" "Нет"]

    [radio consultation use_label_element default:2 "Да" "Нет"]

    Если пользователю нужно явно выбрать вариант, radio даже лучше, потому что не возникает неопределённого состояния.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно