Отзывы — одна из важнейших частей доверия ваших посетителей к сайту. Иногда стандартного функционала WordPress или плагинов для отзывов недостаточно, особенно если требуется не просто отображать отзывы, а делать их динамическими, с возможностью обновления и модерации. В этой статье рассмотрим, как создать на сайте WordPress систему обновляемых отзывов с помощью плагина WPRemark и дополнить её кастомным кодом для улучшения функционала.
Почему стоит выбрать WPRemark для отзывов в WordPress
WPRemark — это мощный плагин для управления отзывами, который позволяет не только размещать отзывы пользователей, но и модерировать их, создавать рейтинги, фильтровать отзывы по разным параметрам. Он отлично подходит для магазинов, сервисов и блогов, где отзывы играют роль социального доказательства.
Ключевые преимущества WPRemark:
- Удобная панель модерации отзывов;
- Возможность добавлять ответы администратора;
- Поддержка рейтингов и голосований;
- Кастомизация шаблонов отображения;
- Интеграция с WooCommerce и другими плагинами.
Для нашего примера мы будем использовать именно WPRemark, так как он хорошо документирован и расширяем.
Настройка WPRemark: базовая установка и конфигурация
Для начала установим и активируем плагин WPRemark. После этого перейдите в меню плагина в админке WordPress и выполните базовые настройки:
- Выберите типы записей, к которым будут привязаны отзывы (например, записи или товары WooCommerce);
- Настройте параметры модерации — автоматическое или ручное одобрение;
- Определите поля для ввода пользователями (текст отзыва, имя, рейтинг и т.д.);
- Настройте отображение отзывов на сайте через шорткод или блок в редакторе.
WPRemark уже предоставляет удобные виджеты и шорткоды, но для реализации обновляемых отзывов добавим кастомный функционал.
Добавление возможности обновления отзывов пользователями
Стандартно WPRemark не позволяет пользователям редактировать свои отзывы после публикации. Но часто это необходимо — например, клиент хочет дополнить отзыв после использования товара или услуги.
Реализуем такой функционал с помощью кастомного кода, который добавит ссылку «Редактировать отзыв» рядом с отзывом пользователя, если он авторизирован и является автором этого отзыва.
Создание функции wpwp_update_remark_review_edit_link()
Добавим следующий код в файл functions.php вашей темы или в плагин-сниппет:
function wpwp_update_remark_review_edit_link($content) {
if (!is_user_logged_in()) return $content;
global $post;
$current_user = wp_get_current_user();
// Проверяем, что это отзыв WPRemark и автор совпадает
$review_author_id = get_post_field('post_author', $post->ID);
if ($review_author_id === $current_user->ID) {
$edit_link = get_edit_post_link($post->ID);
if ($edit_link) {
$content .= ' — <a href="' . esc_url($edit_link) . '">Редактировать отзыв</a>';
}
}
return $content;
}
add_filter('the_content', 'wpwp_update_remark_review_edit_link');Этот фильтр добавит ссылку на стандартную страницу редактирования отзыва в админке, если текущий пользователь — автор отзыва.
Создание фронтенд-формы редактирования отзыва
Чтобы дать пользователю возможность редактировать отзыв без захода в админку, создадим кастомную фронтенд-форму. Воспользуемся хуками WPRemark, чтобы вывести форму редактирования и обработать её.
Пример кода с использованием AJAX для обновления отзыва без перезагрузки страницы:
function wpwp_render_edit_review_form() {
if (!is_user_logged_in()) return;
global $post;
$current_user = wp_get_current_user();
$review_author_id = get_post_field('post_author', $post->ID);
if ($review_author_id !== $current_user->ID) return;
// Вывод формы с полями
echo '<form id="wpwp-edit-review-form">';
echo '<textarea name="review_content">' . esc_textarea($post->post_content) . '</textarea>';
echo '<input type="hidden" name="review_id" value="' . esc_attr($post->ID) . '" />';
echo '<button type="submit">Сохранить</button>';
echo '</form>';
}
add_action('wpremark_after_review_content', 'wpwp_render_edit_review_form');
function wpwp_handle_ajax_edit_review() {
check_ajax_referer('wpwp_edit_review_nonce', 'nonce');
if (!is_user_logged_in()) wp_send_json_error('Неавторизованный пользователь');
$review_id = intval($_POST['review_id']);
$content = sanitize_textarea_field($_POST['review_content']);
$review_post = get_post($review_id);
if (!$review_post) wp_send_json_error('Отзыв не найден');
if ($review_post->post_author != get_current_user_id()) wp_send_json_error('Нет доступа');
$updated = wp_update_post([
'ID' => $review_id,
'post_content' => $content
]);
if ($updated) {
wp_send_json_success('Отзыв обновлен');
} else {
wp_send_json_error('Ошибка обновления');
}
}
add_action('wp_ajax_wpwp_edit_review', 'wpwp_handle_ajax_edit_review');Для полной работы формы добавьте JavaScript для AJAX-запроса и nonce-проверку.
Оптимизация работы с отзывами: кеширование и фильтрация
Если на сайте много отзывов, важно оптимизировать их загрузку. WPRemark поддерживает пагинацию и фильтры, но дополнительные меры помогут повысить скорость и удобство.
Использование встроенного кеша WPRemark
В настройках плагина активируйте кеширование отзывов. Это снизит нагрузку на базу данных при повторных запросах.
Фильтрация отзывов по рейтингу
Добавьте на страницу с отзывами возможность фильтрации по звездному рейтингу. Для этого используйте шорткод с параметрами или создайте кастомный фильтр через AJAX.
[wpremark_reviews rating="5"]Это выведет только отзывы с рейтингом 5 звезд.
Интеграция с другими плагинами WPShop для расширения функционала
Если вы хотите автоматизировать сбор и управление отзывами, обратите внимание на совместимость WPRemark с другими продуктами WPShop:
- WPRemark — для отзывов и рейтингов;
- Expert Review — расширяет возможности оценки товаров и услуг;
- WPRemark Pro — платная версия с дополнительными функциями.
Используя связку этих решений, вы получите гибкую систему отзывов с возможностью детального анализа и удобного управления.