EVWC Basic Email Validation
WordPress email validation plugin powered by the Mailgun API. Verifies addresses, syncs suppression lists via a secure signed webhook, runs a daily cron job and exposes a minimal settings page. Secrets stay outside git, coupling to WP is intentionally small and explicit.
★ 1stars
0forks
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/amals367/evwc-basic/archive/refs/heads/main.zipWordPress плагин для валидации e‑mail и синхронизации Mailgun suppressions. Без утечек секретов. Минимальная зависимость от WP.
- Version: 0.4.0
- Requires at least: WP 5.6
- Tested up to: WP 6.6
- PHP: 7.4+
- License: GPL-2.0-or-later
- Text Domain:
evwc-basic - Domain Path:
/languages
Что делает
- Проверка e‑mail через Mailgun API.
- Безопасный REST вебхук: подпись + жёсткий отказ при отсутствии ключа.
- Суточный cron‑синк списков подавления (bounces/complaints/unsubscribes).
- Примитивная админ‑страница для ключей/доменов (можно задавать через константы).
Установка
- Скопируй
evwc-config.example.php→evwc-config.phpи заполни значения или задай константы вwp-config.php(предпочтительно на проде). - Активируй плагин.
- В админке открой страницу настроек и проверь URL вебхука.
Конфигурация (секреты вне гита)
// wp-config.php (рекомендуется)
define('EVWC_MG_KEY', 'key-REPLACE_ME');
define('EVWC_MG_DOMAIN', 'mg.example.com');
define('EVWC_MG_REGION', 'US'); // или 'EU'
Локальный файл (для dev)
// evwc-config.php (локально)
if (!defined('EVWC_MG_KEY')) define('EVWC_MG_KEY', 'key-REPLACE_ME');
if (!defined('EVWC_MG_DOMAIN')) define('EVWC_MG_DOMAIN', 'mg.example.com');
if (!defined('EVWC_MG_REGION')) define('EVWC_MG_REGION', 'US');
REST эндпоинты
- Вебхук:
POST /wp-json/evwc/v1/mg-webhook
Требует валидной подписи Mailgun и наличияEVWC_MG_KEY. При отсутствии ключа — 403. При некорректной подписи — 403.
Cron
- Хук:
evwc_sync_suppressions_event(ежедневно). - Деактивация плагина снимает хук корректно.
Локализация
Text Domain: evwc-basic,Domain Path: /languages.- Загружчик
load_plugin_textdomain()подключён. - Заготовка:
languages/evwc-basic.pot.
Безопасность
- Секреты только через константы/локальный файл из
.gitignore. - Вебхук отклоняет всё без ключа и без валидной подписи.
- Выводы в админке экранировать
esc_html/esc_attrпо мере локализации строк.
Структура репозитория
evwc-basic/
evwc-basic.php
evwc-config.example.php
languages/evwc-basic.pot
assets/screenshot-1.png
.gitignore
README.md
LICENSE
.gitignore уже содержит: evwc-config.php, /vendor/, /node_modules/, IDE/OS‑мусор.