Для отправки через Contact Form 7 (CF7) значения чекбокса, созданного с помощью Advanced Custom Fields (ACF), вам понадобится некоторый код на стороне сервера. Ведь стандартный шаблон CF7 не предоставляет встроенной функциональности для работы с такими типами полей.
Вот шаги, которые нужно выполнить:
1. В ACF создайте пользовательское поле типа "Checkboxes" и настройте его в соответствии с вашими требованиями. Запомните ключ поля, который будет использоваться в коде.
2. В файле functions.php
вашей активной темы добавьте следующий код:
function acf_checkbox_values_to_cf7( $tag, $unused ) { if ( $tag['name'] == 'acf_checkbox' ) { // замените 'acf_checkbox' на название поля из ACF $raw_values = isset( $_POST['acf_checkbox'] ) ? $_POST['acf_checkbox'] : array(); // замените 'acf_checkbox' на название поля из ACF // Обработка значений $values = array(); foreach ( $raw_values as $value ) { $label = get_field_object( 'acf_checkbox' )['choices'][ $value ]; // замените 'acf_checkbox' на название поля из ACF $values[] = $label; } $tag['values'] = implode( ', ', $values ); } return $tag; } add_filter( 'wpcf7_form_tag', 'acf_checkbox_values_to_cf7', 10, 2 );
В этом коде мы определяем функцию acf_checkbox_values_to_cf7
, которая будет вызываться фильтром wpcf7_form_tag
, используемым CF7 для обработки тегов формы. Когда CF7 сталкивается с тегом формы, с именем acf_checkbox
(замените на свое поле из ACF), фильтр будет вызывать функцию acf_checkbox_values_to_cf7
, которая обработает значения этого поля.
3. В вашей форме CF7 используйте следующий код для создания чекбокса:
<label>Мой чекбокс<br> [checkbox acf_checkbox "значение1" "значение2" "значение3"] <!-- замените на свои значения --> </label>
Вам нужно будет заменить "значение1", "значение2", "значение3" и т.д. на соответствующие значения, которые вы настроили в ACF.
Теперь, когда пользователь отправит форму CF7, выбранные значения чекбокса из ACF будут правильно обработаны и отправлены вместе с формой.
Надеюсь, эта информация поможет вам успешно отправлять значения чекбокса ACF через CF7. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.