Principal/WordPress Fullstack/Blueprints/Temas personalizados/Formularios de captación con almacenamiento en CPT y notificaciones por Telegram / SMTP
Volver a tarjetas «Temas personalizados»
Temas personalizados(ТЗ 28 из 54)
Especificación: Formularios de captación con almacenamiento en CPT y notificaciones por Telegram / SMTP
Temas personalizados5 шагов • +25 XP

Especificación: Formularios de captación con almacenamiento en CPT y notificaciones por Telegram / SMTP

Captación de clientes potenciales de máxima velocidad sin Contact Form 7: almacenamiento en un CPT privado para auditoría, endpoint en la REST API, trampa Honeypot invisible, alertas instantáneas en Telegram y UX asíncrona.

~8 ч работыУровень: MiddlePHP 8.3/8.4wp_remote_post()Telegram Bot APICustom Post Type (lead_entry)wp_nonce_field()Zero-JS Honeypotwp_mail()PHPMailer SMTP
+5 XP за шаг
Выполнено 0 из 5 шагов (0%)
Трудозатраты~8 рабочих часов
Фриланс вилка~$360 – $600 (€320 – €560)
Оценка веб-студии~$760 – $1,280 (€720 – €1200)

ТЗ заказчика (исходный бриф):

Contact Form 7 ralentiza nuestro sitio web, recibe spam constante y los emails acaban en la carpeta de correo no deseado. Necesitamos formularios ligeros que guarden los leads en WordPress, envíen alertas instantáneas a nuestro grupo de ventas en Telegram y notifiquen por SMTP.
Ключевые требования:
  • •Tipo de contenido personalizado privado 'lead_entry' para registrar con seguridad cada contacto en la base de datos
  • •Marcado de formulario ligero con token CSRF Nonce y campo invisible Honeypot contra spam-bots
  • •Endpoint personalizado en WP REST API /theme/v1/submit-lead con saneamiento estricto y límite de peticiones
  • •Notificación instantánea en Telegram mediante la API de Telegram Bot utilizando wp_remote_post()
  • •JavaScript moderno con Fetch API, indicador de carga, gestión de errores y modal de confirmación
Ограничения проекта:
  • •Cero plugins de formularios pesados (sin Contact Form 7, WPForms o Gravity Forms)
  • •Almacenamiento seguro del Token del Bot de Telegram y Chat ID en constantes de wp-config.php
  • •El envío no debe bloquear la interfaz (procesamiento completamente asíncrono)
Критерии приёмки (KPI):
  • Tiempo de respuesta del envío < 350ms
  • Cero registros de spam recibidos gracias a la trampa Honeypot
  • 100% de los contactos registrados con éxito en la base de datos sin depender de servicios externos

Конфигурация блупринта под условия проекта

Выберите архитектуру и стек — шаги роадмапа, структура файлов и примеры кода переключатся автоматически:

Пошаговое практическое руководство по ТЗ

Подробный разбор архитектуры, код реализации и советы эксперта по каждому этапу:

1
Этап 1 из 5

Paso 1: CPT privado lead_entry para almacenamiento de contactos

~40 минСредний

Практическое руководство:

Registre el CPT 'lead_entry' con public => false, show_ui => true y show_in_menu => true. Añada columnas personalizadas: Nombre, Teléfono, Email, Estado y Fecha de envío.

План и контрольные точки реализации:
1Зарегистрировать приватный CPT lead_entry
2Запретить создание заявок вручную через do_not_allow
3Добавить информативные колонки (Телефон, Страница, Дата)
Важные технические нюансы и подводные камни:

Establezca publicly_queryable => false y exclude_from_search => true para que los datos de contactos nunca sean accesibles públicamente.

Ожидаемый артефакт этапа:

Удобная CRM-система для учета лидов прямо в админке WordPress.

PHP
<?php
// inc/lead-cpt.php
declare(strict_types=1);

add_action('init', function (): void {
    register_post_type('lead_entry', [
        'labels' => [
            'name'               => 'Заявки с сайта',
            'singular_name'      => 'Заявка',
            'menu_name'          => 'Заявки',
            'all_items'          => 'Все заявки',
            'view_item'          => 'Просмотр заявки',
            'search_items'       => 'Искать заявки',
            'not_found'          => 'Заявок пока нет',
        ],
        'public'             => false,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'menu_icon'          => 'dashicons-email-alt',
        'supports'           => ['title'],
        'capabilities'       => [
            'create_posts' => 'do_not_allow',
        ],
        'map_meta_cap'       => true,
    ]);
});

// Кастомные колонки в таблице заявок
add_filter('manage_lead_entry_posts_columns', function (array $cols): array {
    return [
        'cb'         => $cols['cb'],
        'title'      => 'Клиент',
        'lead_phone' => 'Телефон',
        'lead_page'  => 'Страница захвата',
        'date'       => 'Дата поступления',
    ];
});

add_action('manage_lead_entry_posts_custom_column', function (string $col, int $post_id): void {
    if ($col === 'lead_phone') {
        echo esc_html((string) get_post_meta($post_id, '_lead_phone', true));
    }
    if ($col === 'lead_page') {
        echo esc_html((string) get_post_meta($post_id, '_lead_page', true));
    }
}, 10, 2);
2
Этап 2 из 5

Paso 2: Marcado accesible de formulario y trampa Honeypot

~30 минЛегкий
3
Этап 3 из 5

Paso 3: Endpoint en la REST API /theme/v1/submit-lead

~40 минСредний
4
Этап 4 из 5

Paso 4: Envío de alertas a Telegram con wp_remote_post()

~35 минСредний
5
Этап 5 из 5

Paso 5: JavaScript en cliente y confirmación visual asíncrona

~25 минЛегкий

Типичные грабли на этом ТЗ

2 антипаттерна

Инструменты экосистемы Fullstack AI Lab для этого ТЗ

Интеграция