Я пытался найти эту проблему здесь, в StackOverflow, но ответы, в общем-то, довольно просты, поэтому у меня возникли некоторые проблемы с пониманием, как именно это сделать.
У меня есть контактная форма7 форма с двумя полями: одно для электронной почты с именем your-email
и одно для телефона с именем your-telephone
.Я хочу, чтобы форма принимала одно из этих полей и делала недействительной, когда оба поля пусты.
Я нашел фрагмент, который не делает именно этого, но, кажется, использует для этого правильный хук, здесь: https://wpquestions.com/Cross_Field_Validation_in_Contact_Form_7/10078
Я преобразовал код в свою цель следующим образом, и он работает наполовину:
add_filter( 'wpcf7_validate', 'wpq_validate' );
function wpq_validate( $result ) {
$email = filter_input( INPUT_POST, 'your-email', FILTER_SANITIZE_STRING );
$telephone = filter_input( INPUT_POST, 'your-telephone', FILTER_SANITIZE_STRING );
$error_msg = 'One of these fields must be entered';
if( empty($email) && empty($telephone) ) {
$result['valid'] = false;
$result['reason']['your-email'] = $error_msg;
$result['reason']['your-telephone'] = $error_msg;
}
return $result;
}
Под "наполовину" я имею в виду, что форма не отправляется, когда я покидаю обаполя пустые.Но он не показывает никаких сообщений об ошибках, а загрузочный бланк формы просто вращается бесконечно.Я предполагаю, что в коде есть некоторые вызовы, которые устарели, поскольку код был опубликован в 2014 году.
Так кто-нибудь знает, как мне изменить это в соответствии с текущей версией Контактной формы 7?