<?php
/*
Plugin Name: Enhanced Contact Form 7
Description: Adds phone masking, spam protection, and page title tracking to Contact Form 7
Version: 1.1
Author: Your Name
*/
if (!defined('ABSPATH')) {
exit; // Exit if accessed directly
}
class Enhanced_Contact_Form_7 {
public function __construct() {
$this->init_hooks();
}
private function init_hooks() {
// Убрали wp_head хук, так как jQuery теперь подключается через wp_enqueue_scripts
// Подключаем скрипты
add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'));
// Активируем маску для телефона
add_action('wp_footer', array($this, 'activate_masked_input'));
// Защита от спама
add_filter('wpcf7_validate', array($this, 'validate_bot'), 10, 2);
// Добавляем заголовок страницы
add_filter('wpcf7_posted_data', array($this, 'add_page_title_to_form_data'));
add_action('wpcf7_before_send_mail', array($this, 'save_page_title_to_mail'));
}
// Подключаем скрипты
public function enqueue_scripts() {
// Используем встроенный jQuery WordPress
wp_enqueue_script('jquery');
// Подключаем maskedinput
wp_enqueue_script(
'masked-input',
'https://cdnjs.cloudflare.com/ajax/libs/jquery.maskedinput/1.4.1/jquery.maskedinput.min.js',
array('jquery'),
'1.4.1',
true
);
}
// Активируем маску для телефона
public function activate_masked_input() {
?>
<script type="text/javascript">
jQuery(function($) {
if($(".wpcf7-tel").length) {
$(".wpcf7-tel").mask("+7 (999) 999-99-99");
}
});
</script>
<style>
.qqq { display: none !important; }
</style>
<?php
}
// Защита от спама
public function validate_bot($result, $tags) {
if (!empty($_POST['question'])) {
$result->invalidate('question', 'Spam detected');
return $result;
}
return $result;
}
// Добавляем заголовок страницы в данные формы
public function add_page_title_to_form_data($posted_data) {
if (is_singular()) {
$posted_data['page_title'] = get_the_title();
} else {
$posted_data['page_title'] = wp_title('', false);
}
return $posted_data;
}
// Сохраняем заголовок страницы в письме
public function save_page_title_to_mail($contact_form) {
$submission = WPCF7_Submission::get_instance();
if ($submission) {
$posted_data = $submission->get_posted_data();
if (isset($posted_data['page_title'])) {
$mail = $contact_form->prop('mail');
// Добавляем в тело письма
$mail['body'] = str_replace(
'[page_title]',
sanitize_text_field($posted_data['page_title']),
$mail['body']
);
// Добавляем в тему письма (опционально)
$mail['subject'] = str_replace(
'[page_title]',
sanitize_text_field($posted_data['page_title']),
$mail['subject']
);
$contact_form->set_properties(array('mail' => $mail));
}
}
}
}
new Enhanced_Contact_Form_7();
Поле номера телефона
В форму Contact Form 7 добавьте поле телефона со следующим шорткодом:
[tel* telefon class:tel placeholder "+7 (___) ___-__-__"]
Защита от спама
Добавьте скрытое поле в форму:[textarea question class:qqq]
Отслеживание заголовка страницы
Чтобы включить заголовок страницы в уведомления по электронной почте, добавьте [page_title] в тело шаблона письма в настройках Contact Form 7.

@seomur
Это сайт с моими заметками по wordpress и woocommerce