Contact form 7 — Как отправить Да, если чекбокс выбран и Нет, если чекбокс не выбран?
Использовал такой способ
[checkbox your-checkbox use_label_element "Нужна ли консультация по программе?|Да"] |
[checkbox your-checkbox use_label_element "Нужна ли консультация по программе?|Да"]
в таком случае, если чекбокс выбран на почту приходит "Да", если не выбран приходит [your-checkbox]. Как решить данную проблему?
Дополнительные вопросы
А просто не отправлять пустые поля - не вариант?
Дмитрий @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 "Да" "Нет"]
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

В Contact Form 7 unchecked checkbox действительно может давать пустое значение, а в письме иногда остаётся тег вида
[your-checkbox], если поле не подставилось. Надёжнее решить это через pipe + дополнительную обработку или через скрытое поле со значением по умолчанию.Самый простой вариант в письме: не пытаться выводить сам checkbox как «Да/Нет», а сделать формулировку так, чтобы пустота была понятной. Но если нужно строго «Да» или «Нет», используйте фильтр перед отправкой письма.
Форма:
[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);
В шаблоне письма используйте не
[your-checkbox], а свой маркер:Нужна консультация: [your-checkbox-yesno]
Так вы полностью контролируете вывод.
Альтернатива без кода — использовать radio:
[radio consultation use_label_element default:2 "Да" "Нет"]
Если пользователю нужно явно выбрать вариант, radio даже лучше, потому что не возникает неопределённого состояния.