@ak_wi

Как прервать отправку формы Contact Form 7?

Использую следующий хук для Contcact Form 7
add_action("wpcf7_posted_data", "wpcf7_modify_this");
function wpcf7_modify_this($posted_data) {

	
	    $url = strpos($posted_data['your-message'], 'http://');
		
		if ($url) {
			return false;
		}
	

	return $posted_data;
}


Требуется вместо return false; делать сброс отправки формы (чтобы письмо не отправлялось) или вывод ошибки. Можно ли это реализовать?
  • Вопрос задан
  • 363 просмотра
Решения вопроса 1
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
Вам нужно использовать динамический хук wpcf7_validate_.

Примерно, так:
add_filter( 'wpcf7_validate_textarea', 'custom_textarea_validation_filter', 20, 2 );
add_filter( 'wpcf7_validate_textarea*', 'custom_textarea_validation_filter', 20, 2 );
 
function custom_textarea_validation_filter( $result, $tag ) {
    if ( 'your-message' == $tag->name ) {
        $your_message = isset( $_POST['your-message'] ) ? trim( $_POST['your-message'] ) : '';
 
        if ( strpos($your_message, 'http://') !== false ) {
            $result->invalidate( $tag, "Incorrect value" );
        }
    }
 
    return $result;
}


Документация по созданию своих правил валидации.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы