Удаление отзывов на сайте WordPress — задача, с которой часто сталкиваются владельцы сайтов, особенно если отзывы становятся спамом или нежелательными. Стандартный способ удаления через админку может быть неудобным и затратным по времени, особенно при большом количестве отзывов. В этой статье мы рассмотрим, как реализовать удаление отзывов через AJAX, чтобы сделать процесс быстрым, удобным и безопасным.
Почему стоит использовать AJAX для удаления отзывов в WordPress
AJAX позволяет обновлять данные на странице без полной перезагрузки, что повышает удобство пользователя и ускоряет взаимодействие с сайтом. Для администратора это значит, что можно удалять отзывы прямо из фронтенда или интерфейса без лишних переходов и ожиданий.
Такой подход особенно полезен, когда отзывы отображаются в кастомном интерфейсе или на витрине сайта, где важно быстро реагировать на нежелательный контент.
Однако при работе с AJAX важно соблюдать меры безопасности, чтобы исключить возможность несанкционированного удаления данных.
Подготовка: регистрация AJAX обработчиков в WordPress
Для начала нам нужно зарегистрировать обработчики AJAX запросов в WordPress. В этом поможет функция clearfy_register_ajax_handlers(), которую мы добавим в файл functions.php вашей темы или в кастомный плагин.
function clearfy_register_ajax_handlers() {
add_action('wp_ajax_clearfy_delete_review', 'clearfy_handle_delete_review');
add_action('wp_ajax_nopriv_clearfy_delete_review', 'clearfy_handle_delete_review'); // если нужно для неавторизованных
}
add_action('init', 'clearfy_register_ajax_handlers');
Обработчик clearfy_handle_delete_review будет отвечать за логику удаления.
Реализация функции удаления отзыва
Далее реализуем функцию, которая проверит права пользователя, валидирует запрос и удалит отзыв.
function clearfy_handle_delete_review() {
// Проверяем nonce для безопасности
check_ajax_referer('clearfy_delete_review_nonce', 'nonce');
// Проверяем права пользователя
if (!current_user_can('edit_posts')) {
wp_send_json_error('У вас недостаточно прав для удаления отзывов.');
}
$review_id = isset($_POST['review_id']) ? intval($_POST['review_id']) : 0;
if (!$review_id) {
wp_send_json_error('Неверный ID отзыва.');
}
// Проверяем, что отзыв существует и принадлежит нужному типу записи
$post = get_post($review_id);
if (!$post || $post->post_type !== 'review') { // замените 'review' на ваш тип записи отзывов
wp_send_json_error('Отзыв не найден.');
}
// Удаляем отзыв навсегда
if (wp_delete_post($review_id, true)) {
wp_send_json_success('Отзыв успешно удалён.');
} else {
wp_send_json_error('Ошибка при удалении отзыва.');
}
wp_die();
}
Добавление кнопки удаления отзывов на фронтенде
Для удобства администраторов можно добавить кнопку удаления рядом с каждым отзывом, которая будет отправлять AJAX запрос.
Пример HTML-кода кнопки с nonce для безопасности:
<button class="clearfy-delete-review" data-review-id="123" data-nonce="<?php echo wp_create_nonce('clearfy_delete_review_nonce'); ?>">Удалить отзыв</button>
JavaScript для отправки AJAX-запроса
Добавим скрипт, который будет отлавливать нажатия и отправлять запрос:
jQuery(document).ready(function($) {
$('.clearfy-delete-review').on('click', function(e) {
e.preventDefault();
if (!confirm('Вы уверены, что хотите удалить этот отзыв?')) {
return;
}
var button = $(this);
var reviewId = button.data('review-id');
var nonce = button.data('nonce');
$.ajax({
url: ajaxurl, // в админке WordPress ajaxurl уже определён
type: 'POST',
data: {
action: 'clearfy_delete_review',
review_id: reviewId,
nonce: nonce
},
success: function(response) {
if (response.success) {
alert(response.data);
button.closest('.review-item').remove(); // удаляем элемент из DOM
} else {
alert('Ошибка: ' + response.data);
}
},
error: function() {
alert('Произошла ошибка при удалении отзыва.');
}
});
});
});
Советы по безопасности и оптимизации
1. Nonce — обязательный элемент для защиты от CSRF атак. Никогда не отключайте проверку nonce в AJAX обработчиках.
2. Проверка прав — убедитесь, что удалять отзывы могут только авторизованные пользователи с нужными правами, например, администраторы или редакторы.
3. Удаление навсегда — в функции wp_delete_post параметр true означает удаление без помещения в корзину. Если хотите оставить возможность восстановления, передайте false.
4. Обработка ошибок — всегда отправляйте понятные сообщения клиенту, чтобы пользователь понимал, что произошло.
Интеграция с плагинами Clearfy Pro и Expert Review
Если вы используете на сайте плагин Clearfy Pro, он уже содержит расширенные инструменты для управления отзывами и безопасностью AJAX запросов. В сочетании с Expert Review вы сможете создавать гибкие формы отзывов с возможностью их модерирования и удаления через AJAX настраиваемым образом.
Итог
Удаление отзывов через AJAX — удобный и современный способ управления контентом в WordPress. Главное — обеспечить безопасность и корректную проверку данных. Пример из статьи позволит вам реализовать такую функциональность самостоятельно, а использование готовых решений из набора плагинов Clearfy значительно упростит задачу.