Отслеживание изменений в сообщениях комментариев WordPress

В стандартной функциональности WordPress нет возможности отслеживать редактирование комментариев после их публикации. Для многих сайтов, где пользователи активно общаются, эта функция может быть крайне полезна — например, для модераторов, чтобы видеть, что именно изменилось в комментарии, или для самих пользователей, чтобы контролировать историю своих сообщений.

Почему важно отслеживать изменения в комментариях WordPress

Редактирование комментариев без истории изменений может привести к недопониманию между участниками обсуждения или к злоупотреблениям. Представьте ситуацию, когда пользователь написал одно, а потом изменил текст на совершенно другой, например, удалив критическую информацию или добавив неуместный контент.

Отслеживание изменений позволяет:

  • Вести историю редактирования комментариев;
  • Показывать пользователям дату и время последнего изменения;
  • Обеспечивать прозрачность коммуникаций;
  • Модерировать спорные моменты с учетом изменений.

Как реализовать отслеживание изменений комментариев в WordPress

Для реализации этой задачи можно использовать как плагины, так и собственный код. Ниже рассмотрим оба варианта.

Использование плагина WP Comment Edit Pro

Плагин WP Comment Edit Pro позволяет пользователям редактировать свои комментарии в течение заданного времени, а также сохраняет историю изменений, доступную администраторам.

Основные возможности плагина:

  • Редактирование комментариев пользователями;
  • Журнал изменений комментариев;
  • Уведомления о редактировании для модераторов;
  • Настройка времени, в течение которого разрешено редактирование.

Этот плагин отлично подходит, если вы хотите быстро внедрить функционал без программирования.

Своя реализация: сохранение истории изменений комментариев в мета-поле

Если вы хотите гибко настроить функционал и интегрировать его в собственный проект, можно реализовать отслеживание изменений с помощью хуков WordPress.

Идея — при сохранении комментария проверять, изменился ли текст, и если да, сохранять старую версию в мета-данных комментария.

add_action('wpcource_comment_edit_original_save', 'wpcource_save_comment_edit_history', 10, 2);
function wpcource_save_comment_edit_history($comment_id, $comment) {
    $old_text = get_comment_meta($comment_id, '_wpcource_comment_edit_history', true);
    if (!is_array($old_text)) {
        $old_text = [];
    }
    $current_text = $comment->comment_content;
    $last_version = end($old_text);
    if ($last_version && $last_version['content'] === $current_text) {
        return; // Текст не изменился
    }
    $old_text[] = [
        'content' => $current_text,
        'edited_at' => current_time('mysql')
    ];
    update_comment_meta($comment_id, '_wpcource_comment_edit_history', $old_text);
}

Далее нужно вызвать эту функцию при сохранении комментария. Для этого используем фильтр edit_comment:

add_action('edit_comment', 'wpcource_handle_comment_edit', 10, 2);
function wpcource_handle_comment_edit($comment_id, $comment) {
    wpcource_save_comment_edit_history($comment_id, $comment);
}

Таким образом, при каждом редактировании комментария у вас будет сохраняться история в мета-поле _wpcource_comment_edit_history.

Отображение истории изменений комментариев на сайте

Теперь, когда история хранится, нужно вывести ее в интерфейсе. Например, добавим под комментарием блок с последними изменениями.

add_filter('comment_text', 'wpcource_show_comment_edit_history', 10, 2);
function wpcource_show_comment_edit_history($text, $comment) {
    $history = get_comment_meta($comment->comment_ID, '_wpcource_comment_edit_history', true);
    if (is_array($history) && count($history) > 1) {
        $output = '<div class="wpcource-comment-history"><strong>История изменений:</strong><ul>';
        foreach ($history as $version) {
            $output .= '<li><em>' . esc_html($version['edited_at']) . '</em>: ' . esc_html($version['content']) . '</li>';
        }
        $output .= '</ul></div>';
        $text .= $output;
    }
    return $text;
}

Этот код добавит под каждым комментарием список с предыдущими версиями текста и временем редактирования. Можно стилизовать блок через CSS, чтобы он выглядел аккуратно и не мешал основному содержимому.

Дополнительные советы и рекомендации

Если комментариев много, хранение всей истории в мета-поле может увеличить нагрузку на базу данных. В этом случае можно рассмотреть отдельную таблицу для истории изменений или использовать специализированные плагины с оптимизированным хранением.

Также обратите внимание на безопасность: выводя историю, всегда используйте функции экранирования (esc_html, esc_textarea), чтобы избежать XSS-уязвимостей.

Для улучшения UX можно добавить отметку о том, что комментарий был отредактирован, например, пометку «(изменено)» рядом с датой публикации.

Если используете плагин WPRemark для отзывов, проверьте, поддерживает ли он историю изменений, либо интегрируйте описанный код с ним для расширения возможностей.

Как автоматически удалить старые версии записей в WordPress
08.01.2026
Уникальные методы защиты админ-панели WordPress от взлома
19.03.2026
Как удалить пустые категории в WordPress с помощью кода
11.12.2025
Как создать динамическую форму в WordPress без плагинов
07.11.2025
Как создать персонализированный виджет в WordPress
21.11.2025

Обучение разработке на WordPress, как создавать темы, плагины. Подробнее об обучении.