Как отключить автозаполнение для полей формы в Contact Form 7?
У меня есть следующий код для формы Contact Form 7. Обычно я использую autocomplete="off"
для HTML-полей ввода. Однако не могу понять, как сделать то же самое для Contact Form 7
<div class="row">
<div class="col-md-6">
[text* FirstName placeholder "Имя"]
</div>
<div class="col-md-6">
[text* LastName placeholder "Фамилия"]
</div>
<div class="col-md-12">
[email* EmailAddress placeholder "Email"]
</div>
<div class="col-md-12">
[text* desc placeholder "Расскажите немного о себе..."]
</div>
<div class="col-md-12">
[submit "Отправить"]
</div>
</div>

Согласно вопросу и ответу разработчика, размещенному здесь: https://wordpress.org/support/topic/autocomplete-off-3/
Вам просто нужно добавить параметр autocomplete:off
в шорткод:
[email your-email autocomplete:off "example@example.com"]
Однако, если плагин не был обновлен, как указано в этом вопросе, для использования autocomplete:false, Chrome может его игнорировать. Если это все еще не работает, вам может потребоваться обратиться в поддержку автора плагина. Функция autocomplete была добавлена в этот плагин в версии 4.5.

Автозаполнение тегов в настройках формы больше не работает (на текущей версии плагина Contact Form 7 5.1.3
).
Единственное решение, которое сработало для меня — это добавление пользовательских атрибутов, как описано в https://stackoverflow.com/a/46316728/1720476.
Например, если у вас есть поля FirstName
и LastName
, где вы хотите отключить автозаполнение.
Добавьте этот код в файл functions.php
:
add_filter( 'wpcf7_form_elements', 'imp_wpcf7_form_elements' );
function imp_wpcf7_form_elements( $content ) {
$str_pos = strpos( $content, 'name="FirstName"' );
if ($str_pos) {
$content = substr_replace( $content, ' autocomplete="both" autocomplete="off" ', $str_pos, 0 );
}
$str_pos = strpos( $content, 'name="LastName"' );
if ($str_pos) {
$content = substr_replace( $content, ' autocomplete="both" autocomplete="off" ', $str_pos, 0 );
}
return $content;
}

Предложенный Арнисом ответ работает, если вы используете одну и ту же форму на всем сайте, однако он будет добавлять текст в формы, которые не содержат всех полей, указанных в файле functions.php.
Новое предложенное решение:
Установка атрибута "autocomplete" для input или textarea в случайное значение, которое не является стандартным, по состоянию на декабрь 2019 года решает проблему в Chrome. Непонятно, почему встроенная опция CF7 для отключения автозаполнения до сих пор не обновлена.
Вы можете задать этот атрибут с помощью простой строки jQuery:
$("input.wpcf7-form-control, textarea.wpcf7-form-control").attr("autocomplete", "negative");
Этот код применяется к стандартному классу полей CF7.
Примечание: забыл упомянуть, что для этого требуется знание, куда добавлять пользовательские JS-скрипты. Большинство премиум-тем поддерживают раздел для пользовательского JS, либо можно просто добавить эту строку в основной JS-файл дочерней темы.
