Автоматизация сбора отзывов — важная задача для многих сайтов на WordPress, особенно если вам нужно получить качественные и проверенные отзывы от пользователей. В этой статье мы разберем, как создать систему автоматических отзывов с подтверждением, чтобы минимизировать ручную работу и повысить доверие к публикуемым отзывам.
Почему важна система подтверждения отзывов
Многие сталкиваются с проблемой, когда отзывы оставляют боты или недобросовестные пользователи. Без проверки сложно поддерживать качество и релевантность комментариев. Система подтверждения позволяет:
- Фильтровать спам и некачественные отзывы.
- Повышать доверие посетителей через прозрачность процесса.
- Автоматизировать публикацию только проверенных отзывов.
Для реализации такой системы можно использовать как готовые плагины, так и писать собственные решения с использованием WordPress API.
Использование плагина Expert Review для автоматизации отзывов
Плагин Expert Review отлично подходит для создания отзывов с возможностью модерации и подтверждения. Он позволяет настроить:
- Форму сбора отзывов с необходимыми полями.
- Автоматическую отправку писем с подтверждением на email пользователя.
- Отслеживание статуса отзыва (ожидает подтверждения, одобрен, отклонен).
После установки и активации плагина настройте форму и включите опцию подтверждения по email. Это позволит пользователям подтвердить отзыв, перейдя по ссылке в письме, что исключит публикацию спама.
Создание собственного решения для подтверждения отзывов на WordPress
Шаг 1. Создаем пользовательский тип записи для отзывов
Для начала зарегистрируем кастомный тип записи wptour_review, чтобы хранить отзывы отдельно от стандартных комментариев:
function wptour_register_review_cpt() {
$args = [
'public' => true,
'label' => 'Отзывы',
'supports' => ['title', 'editor', 'author'],
'capability_type' => 'post',
'show_in_rest' => true
];
register_post_type('wptour_review', $args);
}
add_action('init', 'wptour_register_review_cpt');Шаг 2. Добавляем форму для сбора отзывов с подтверждением
Создадим простую форму на фронтенде, которая будет отправлять отзыв на обработку:
<form method="post" action="">
<input type="text" name="wptour_name" placeholder="Ваше имя" required>
<input type="email" name="wptour_email" placeholder="Ваш Email" required>
<textarea name="wptour_message" placeholder="Ваш отзыв" required></textarea>
<input type="submit" name="wptour_submit" value="Отправить отзыв">
</form>Обрабатываем отправку формы, создавая отзыв со статусом pending и отправляя email с подтверждением:
function wptour_handle_review_submission() {
if (!empty($_POST['wptour_submit'])) {
$name = sanitize_text_field($_POST['wptour_name']);
$email = sanitize_email($_POST['wptour_email']);
$message = sanitize_textarea_field($_POST['wptour_message']);
// Создаем отзыв с статусом ожидания подтверждения
$post_id = wp_insert_post([
'post_type' => 'wptour_review',
'post_title' => 'Отзыв от ' . $name,
'post_content' => $message,
'post_status' => 'pending',
'post_author' => 0
]);
if ($post_id) {
// Генерируем уникальный ключ подтверждения
$key = wp_generate_password(20, false);
update_post_meta($post_id, '_wptour_confirmation_key', $key);
update_post_meta($post_id, '_wptour_user_email', $email);
// Отправляем email с ссылкой подтверждения
$confirm_link = add_query_arg([
'wptour_confirm_review' => $post_id,
'key' => $key
], home_url());
$subject = 'Подтвердите ваш отзыв';
$body = "Здравствуйте, $name!\nПожалуйста, подтвердите ваш отзыв, перейдя по ссылке:\n$confirm_link";
wp_mail($email, $subject, $body);
echo '<p>Спасибо! Проверьте email для подтверждения отзыва.</p>';
}
}
}
add_action('wp_head', 'wptour_handle_review_submission');Шаг 3. Обработка подтверждения отзыва
Добавим проверку параметров в URL, чтобы активировать отзыв после перехода пользователя по ссылке:
function wptour_confirm_review() {
if (!empty($_GET['wptour_confirm_review']) && !empty($_GET['key'])) {
$post_id = intval($_GET['wptour_confirm_review']);
$key = sanitize_text_field($_GET['key']);
$saved_key = get_post_meta($post_id, '_wptour_confirmation_key', true);
if ($key === $saved_key) {
wp_update_post([
'ID' => $post_id,
'post_status' => 'publish'
]);
delete_post_meta($post_id, '_wptour_confirmation_key');
echo '<p>Ваш отзыв подтвержден и опубликован.</p>';
} else {
echo '<p>Неверный ключ подтверждения.</p>';
}
}
}
add_action('wp_head', 'wptour_confirm_review');Дополнительные советы по улучшению системы отзывов
Использование AJAX для отправки и подтверждения отзывов
Для улучшения UX можно отправлять форму отзывов через AJAX, чтобы не перезагружать страницу, а также динамически показывать статус отправки и подтверждения. Это повысит вовлеченность пользователей.
Интеграция с плагином Clearfy Pro для безопасности
Плагин Clearfy Pro поможет дополнительно защитить форму отзывов от спама и ботов, а также оптимизировать работу сайта.
Вывод отзывов на сайте с пагинацией
Для отображения отзывов используйте WP_Query с параметром post_type = 'wptour_review' и post_status = 'publish'. Для удобства пользователей подключите пагинацию, например, с помощью плагина ABC Pagination.
Пример вывода отзывов:
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$query = new WP_Query([
'post_type' => 'wptour_review',
'post_status' => 'publish',
'paged' => $paged,
'posts_per_page' => 5
]);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
echo '<h3>' . get_the_title() . '</h3>';
echo '<div>' . get_the_content() . '</div>';
}
// Вызов пагинации
if (function_exists('abc_pagination')) {
abc_pagination($query->max_num_pages);
}
}
wp_reset_postdata();