<?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

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x