Что бы сделать обязательным одно из полей — почту или телефон, но не обязательным и то и другое вместе, добавьте в форму поля
[text* user-name placeholder "Ваше имя *"]
[tel user-phone placeholder "Ваш телефон"]
[email user-email placeholder "Ваш e-mail"]
[submit "Отправить"]
[acceptance acceptance-991 optional default:on] <small>Отправляя заявку, Вы даете согласие на обработку своих персональных данных и соглашаетесь с <a href="/politika/" target="_blank" rel="noopener">политикой конфиденциальности</a></small> [/acceptance]
Шокрткод формы
[contact-form-7 id="9307" title="Скидка на модуль"]
Что бы работало на конкретной форме, надо взять id для проверки (в нашем случае 9307) и добавить код ниже в файл function.php
/**
*
* Проверка обязательного ввода одного из двух полей в форме - почта или телефон
*/
add_filter( 'wpcf7_validate', 'dva_klika_form_validate', 10, 2 );
function dva_klika_form_validate( $result, $tags ) {
if ( isset($_POST['_wpcf7']) && $_POST['_wpcf7'] == 9307) { // проверка конкретной формы по id
$form = WPCF7_Submission::get_instance();
// Получаем данные полей
$email = $form->get_posted_data( 'user-email' );
$phone = $form->get_posted_data( 'user-phone' );
// Текст ошибки
$error_msg = 'Заполните телефон или email';
// Если оба поля не заполонены - выдать ошибку
if ( empty( $phone ) && empty( $email ) ) {
$result->invalidate( 'user-email', $error_msg );
$result->invalidate( 'user-phone', $error_msg );
}
return $result;
} else {
return $result;
}
}