Налаштування плагіна Contact Form 7 для WordPress
Contact Form 7 — найпопулярніший безплатний плагін форм для WordPress, встановлений на десятки мільйонів сайтів. Мінімалістичний: не зберігає заявки в базі за замовчуванням, немає візуального редактора — лише шорткоди та хуки. Для простих форм зворотного зв'язку цього достатньо.
Створення форми
Після установки: Контакти → Додати. Форма створюється через простий шорткод-синтаксис:
[text* your-name placeholder "Ваше імя"]
[email* your-email placeholder "Email"]
[tel your-phone placeholder "+7 (___) ___-__-__"]
[textarea your-message placeholder "Повідомлення" 10x5]
[submit "Відправити"]
Зірочка після типу поля (text*, email*) означає обов'язковість. Форма вставляється на сторінку шорткодом [contact-form-7 id="123"].
Налаштування пошти
Вкладка Mail у редакторі форми:
To: [email protected]
From: [your-name] <[email protected]>
Reply-To: [your-email]
Subject: Заявка з сайту: [your-name]
Body:
Ім'я: [your-name]
Email: [your-email]
Телефон: [your-phone]
Повідомлення: [your-message]
Вкладка Mail (2) — друге письмо, наприклад автоответ клієнту.
Зберігання заявок у базі
CF7 сам по собі заявки не зберігає — лише шле листи. Для зберігання встановіть аддон Flamingo:
Плагіни → Додати → Flamingo → Встановити
Після установки у меню з'являється «Flamingo» з розділом «Inbound Messages» — всі відправки форм там.
Захист від спаму
Вбудований захист — honeypot та інтеграція з Akismet:
// У налаштуваннях форми - вкладка Additional Settings
acceptance_as_validation: on
Для reCAPTCHA v3: Контакти → Інтеграція → reCAPTCHA — введіть ключі від Google. Тег [recaptcha] додається у форму.
Turnstile від Cloudflare підключається через плагін CF7 Turnstile.
Користувацька валідація
add_filter( 'wpcf7_validate_tel', function( $result, $tag ) {
$value = isset( $_POST[ $tag->name ] ) ? trim( $_POST[ $tag->name ] ) : '';
if ( $tag->is_required() && ! preg_match( '/^\+7[\d\s\-\(\)]{10,}$/', $value ) ) {
$result->invalidate( $tag, 'Введіть коректний російський номер телефону' );
}
return $result;
}, 10, 2 );
Обробка відправки
add_action( 'wpcf7_mail_sent', function( $contact_form ) {
$submission = WPCF7_Submission::get_instance();
if ( ! $submission ) return;
$data = $submission->get_posted_data();
$name = sanitize_text_field( $data['your-name'] ?? '' );
$email = sanitize_email( $data['your-email'] ?? '' );
// Відправити у Telegram, CRM тощо
send_telegram_notification( "Нова заявка від $name ($email)" );
} );
Динамічні значення за замовчуванням
CF7 підтримує спеціальні теги для підстановки динамічних даних:
[hidden page-url "https://[_site_url][_url]"]
[hidden user-login "[_user_login]"]
[text* name default:"[_logged_in_user first_name]"]
Для більш гнучких значень — фільтр wpcf7_form_tag:
add_filter( 'wpcf7_form_default_value', function( $value, $tag ) {
if ( 'current-product' === $tag->name ) {
return get_the_title(); // підставити заголовок поточної сторінки
}
return $value;
}, 10, 2 );
Файлові вкладення
[file upload-file limit:2mb filetypes:pdf|doc|docx]
Файли додаються до листа і видаляються з сервера після відправки. Для збереження файлів — потрібен користувацький код:
add_action( 'wpcf7_mail_sent', function( $form ) {
$submission = WPCF7_Submission::get_instance();
$uploaded = $submission->uploaded_files();
foreach ( $uploaded as $field => $path ) {
// скопіювати $path у /uploads/submissions/
copy( $path, WP_CONTENT_DIR . '/uploads/submissions/' . basename( $path ) );
}
} );
Обмеження CF7
Немає умовної логіки, немає багатокрокових форм, немає зберігання заявок «з коробки», немає візуального редактора. Для простого «ім'я + телефон + повідомлення» — відмінно підходить. Для складних форм краще дивитися на Gravity Forms або WPForms.
Тимчасові рамки
Налаштування однієї-двох форм з поштою та захистом від спаму — 2–4 години.







