WordPress Email Verification
Email checker for WordPress. Verify emails in contact forms, WooCommerce, and user registration.
Добавьте верификацию email в реальном времени на ваш сайт WordPress. Валидируйте email в контактных формах, при регистрации и оформлении заказа WooCommerce.
Методы интеграции
| Метод | Лучше для | Сложность |
|---|---|---|
| Плагин | Быстрая настройка | Низкая |
| Contact Form 7 | Пользователей CF7 | Низкая |
| WPForms | Пользователей WPForms | Низкая |
| Пользовательский PHP | Полный контроль | Средняя |
Метод 1: Плагин EmailVerify
Установите наш официальный плагин WordPress для простейшей интеграции.
Установка
- Перейдите в Плагины → Добавить новый
- Найдите "EmailVerify Email Verification"
- Нажмите Установить затем Активировать
- Перейдите в Настройки → EmailVerify
- Введите ваш API-ключ
Конфигурация
// wp-config.php (optional)
define('EMAILVERIFY_API_KEY', 'bv_live_xxx');Возможности
- Верификация в реальном времени для всех форм
- Блокировка одноразовых email
- Блокировка ролевых email
- Настраиваемые сообщения об ошибках
- Интеграция с WooCommerce
- AJAX-валидация
Метод 2: Contact Form 7
Добавьте верификацию в формы Contact Form 7.
Использование хуков
// functions.php
add_filter('wpcf7_validate_email*', 'emailverify_cf7_validation', 20, 2);
function emailverify_cf7_validation($result, $tag) {
$email = isset($_POST[$tag->name]) ? sanitize_email($_POST[$tag->name]) : '';
if (empty($email)) {
return $result;
}
$verification = emailverify_check_email($email);
if ($verification['status'] === 'invalid') {
$result->invalidate($tag, 'Please enter a valid email address.');
}
if ($verification['result']['disposable']) {
$result->invalidate($tag, 'Disposable emails are not allowed.');
}
return $result;
}
function emailverify_check_email($email) {
$api_key = defined('EMAILVERIFY_API_KEY')
? EMAILVERIFY_API_KEY
: get_option('emailverify_api_key');
$response = wp_remote_post('https://api.emailverify.ai/v1/verify', [
'headers' => [
'Authorization' => 'Bearer ' . $api_key,
'Content-Type' => 'application/json',
],
'body' => json_encode(['email' => $email]),
'timeout' => 10,
]);
if (is_wp_error($response)) {
return ['status' => 'unknown'];
}
return json_decode(wp_remote_retrieve_body($response), true);
}Конфигурация тега формы
[email* your-email class:emailverify-email]Метод 3: WPForms
Интеграция с WPForms с использованием пользовательской валидации.
PHP-валидация
// functions.php
add_filter('wpforms_process_before_form_data', 'emailverify_wpforms_validation', 10, 2);
function emailverify_wpforms_validation($form_data, $entry) {
foreach ($entry['fields'] as $field_id => $value) {
$field = $form_data['fields'][$field_id] ?? null;
if ($field && $field['type'] === 'email' && !empty($value)) {
$verification = emailverify_check_email($value);
if ($verification['status'] === 'invalid') {
wpforms()->process->errors[$form_data['id']][$field_id] =
'Please enter a valid email address.';
}
if ($verification['result']['disposable'] ?? false) {
wpforms()->process->errors[$form_data['id']][$field_id] =
'Disposable emails are not allowed.';
}
}
}
return $form_data;
}Метод 4: Пользовательская PHP-интеграция
Для полного контроля интегрируйтесь напрямую с нашим API.
Вспомогательный класс
<?php
// includes/class-emailverify.php
class EmailVerify {
private $api_key;
private $api_url = 'https://api.emailverify.ai/v1';
public function __construct($api_key = null) {
$this->api_key = $api_key ?: get_option('emailverify_api_key');
}
public function verify($email) {
$response = wp_remote_post($this->api_url . '/verify', [
'headers' => [
'Authorization' => 'Bearer ' . $this->api_key,
'Content-Type' => 'application/json',
],
'body' => json_encode(['email' => $email]),
'timeout' => 10,
]);
if (is_wp_error($response)) {
return [
'success' => false,
'error' => $response->get_error_message(),
];
}
$body = json_decode(wp_remote_retrieve_body($response), true);
return [
'success' => true,
'data' => $body,
];
}
public function is_valid($email) {
$result = $this->verify($email);
return $result['success'] && $result['data']['status'] === 'valid';
}
public function is_disposable($email) {
$result = $this->verify($email);
return $result['success'] && ($result['data']['result']['disposable'] ?? false);
}
}Использование
$bv = new EmailVerify();
// Basic verification
$result = $bv->verify('user@example.com');
if ($result['data']['status'] === 'valid') {
// Email is valid
}
// Quick checks
if ($bv->is_valid('user@example.com')) {
// Process valid email
}
if ($bv->is_disposable('user@example.com')) {
// Block disposable email
}Регистрация WordPress
Проверяйте email при регистрации пользователей.
// functions.php
add_filter('registration_errors', 'emailverify_registration_check', 10, 3);
function emailverify_registration_check($errors, $sanitized_user_login, $user_email) {
$bv = new EmailVerify();
$result = $bv->verify($user_email);
if (!$result['success']) {
return $errors; // Allow registration if API fails
}
$data = $result['data'];
if ($data['status'] === 'invalid') {
$errors->add('invalid_email',
'<strong>Error</strong>: Please enter a valid email address.');
}
if ($data['result']['disposable'] ?? false) {
$errors->add('disposable_email',
'<strong>Error</strong>: Temporary email addresses are not allowed.');
}
return $errors;
}AJAX-валидация
Добавьте валидацию в реальном времени с помощью JavaScript.
PHP-эндпоинт
// functions.php
add_action('wp_ajax_verify_email', 'emailverify_ajax_verify');
add_action('wp_ajax_nopriv_verify_email', 'emailverify_ajax_verify');
function emailverify_ajax_verify() {
check_ajax_referer('emailverify_nonce', 'nonce');
$email = sanitize_email($_POST['email'] ?? '');
if (empty($email)) {
wp_send_json_error(['message' => 'Email is required']);
}
$bv = new EmailVerify();
$result = $bv->verify($email);
if ($result['success']) {
wp_send_json_success($result['data']);
} else {
wp_send_json_error(['message' => 'Verification failed']);
}
}
// Enqueue scripts
add_action('wp_enqueue_scripts', 'emailverify_enqueue_scripts');
function emailverify_enqueue_scripts() {
wp_enqueue_script('emailverify',
get_template_directory_uri() . '/js/emailverify.js',
['jquery'],
'1.0.0',
true
);
wp_localize_script('emailverify', 'emailverify_ajax', [
'url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('emailverify_nonce'),
]);
}JavaScript
// js/emailverify.js
jQuery(function($) {
$('input[type="email"]').on('blur', function() {
var $input = $(this);
var email = $input.val();
if (!email) return;
$input.addClass('verifying');
$.post(emailverify_ajax.url, {
action: 'verify_email',
nonce: emailverify_ajax.nonce,
email: email
})
.done(function(response) {
$input.removeClass('verifying');
if (response.success) {
var data = response.data;
if (data.status === 'invalid') {
showError($input, 'Please enter a valid email');
} else if (data.result && data.result.disposable) {
showError($input, 'Disposable emails not allowed');
} else {
showSuccess($input);
}
}
})
.fail(function() {
$input.removeClass('verifying');
});
});
function showError($input, message) {
$input.addClass('error').removeClass('valid');
$input.next('.bv-message').remove();
$input.after('<span class="bv-message error">' + message + '</span>');
}
function showSuccess($input) {
$input.addClass('valid').removeClass('error');
$input.next('.bv-message').remove();
$input.after('<span class="bv-message valid">✓</span>');
}
});CSS
/* style.css */
input[type="email"].verifying {
background-image: url('spinner.gif');
background-position: right 10px center;
background-repeat: no-repeat;
}
input[type="email"].error {
border-color: #dc3545;
}
input[type="email"].valid {
border-color: #28a745;
}
.bv-message {
display: block;
font-size: 12px;
margin-top: 4px;
}
.bv-message.error {
color: #dc3545;
}
.bv-message.valid {
color: #28a745;
}Кэширование
Кэшируйте результаты верификации для уменьшения API-вызовов.
function emailverify_check_email_cached($email) {
$cache_key = 'bv_email_' . md5($email);
$cached = get_transient($cache_key);
if ($cached !== false) {
return $cached;
}
$result = emailverify_check_email($email);
// Cache for 24 hours
set_transient($cache_key, $result, DAY_IN_SECONDS);
return $result;
}Лучшие практики
1. Постепенная деградация
Всегда разрешайте отправку формы, если API недоступен:
$result = $bv->verify($email);
if (!$result['success']) {
// Log the error but don't block the user
error_log('EmailVerify API error: ' . $result['error']);
return; // Allow submission
}2. Ограничение частоты запросов
Предотвращайте злоупотребление с помощью ограничения частоты:
function emailverify_rate_limit($email) {
$ip = $_SERVER['REMOTE_ADDR'];
$key = 'bv_rate_' . md5($ip);
$count = get_transient($key) ?: 0;
if ($count >= 10) { // 10 verifications per minute
return false;
}
set_transient($key, $count + 1, MINUTE_IN_SECONDS);
return true;
}3. Безопасность
Всегда санитизируйте и валидируйте входные данные:
$email = sanitize_email($_POST['email']);
if (!is_email($email)) {
// Invalid format, no need to call API
return;
}