Как сделать автоматический журнал изменений в WordPress с подробными примерами кода

Ведение журнала изменений (changelog) для записей и страниц в WordPress — важная задача, если вы хотите отслеживать все правки, сделанные в контенте. Это особенно актуально для сайтов с большим количеством авторов или для журналов, где требуется история редакций для прозрачности и контроля. В этой статье мы подробно рассмотрим, как создать автоматический журнал изменений в WordPress, используя как плагины, так и собственные решения на PHP с использованием хуков и REST API.

Почему важен журнал изменений в WordPress

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

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

Использование плагинов для создания журнала изменений

Плагин Simple History

Simple History — популярный плагин, который отслеживает изменения в записях, страницах, плагинах и других элементах WordPress. Он сохраняет подробную историю действий и выводит её в удобном виде в админке.

Установка и настройка просты: достаточно установить плагин через каталог WordPress, активировать и перейти на страницу журнала изменений.

Плюсы Simple History:

  • Отслеживает не только изменения записей, но и действия пользователей.
  • Поддержка расширений и фильтров для кастомизации.
  • Простота использования.

Подробнее о Simple History можно узнать на wpshop.ru.

Плагин WP Activity Log

WP Activity Log — более продвинутый плагин для ведения журнала активности. Он позволяет отслеживать детальные изменения контента и действий пользователей, поддерживает уведомления и экспорт лога.

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

Создание собственного журнала изменений с помощью кода

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

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

Используем хук post_updated, который вызывается после обновления записи. В нем можно сравнить старое и новое содержимое и при изменении сохранить запись в журнал.

function journalx_post_update_log($post_ID, $post_after, $post_before) {
    // Проверяем тип записи
    if ($post_after->post_type !== 'post') {
        return;
    }

    // Сравниваем содержимое
    if ($post_after->post_content !== $post_before->post_content) {
        $user = wp_get_current_user();
        $time = current_time('mysql');
        $entry = sprintf(
            'Изменено %s пользователем %s\n',
            $time,
            $user->user_login
        );

        // Сохраняем старую версию
        $old_content = $post_before->post_content;
        $log_entry = "{$entry}---\n{$old_content}\n---\n";

        // Получаем существующий журнал
        $logs = get_post_meta($post_ID, '_journalx_change_log', true);
        if (!$logs) {
            $logs = '';
        }

        // Добавляем новую запись в начало журнала
        $logs = $log_entry . $logs;
        update_post_meta($post_ID, '_journalx_change_log', $logs);
    }
}
add_action('post_updated', 'journalx_post_update_log', 10, 3);

В этом коде при каждом обновлении записи сохраняется старое содержимое с отметкой времени и автором изменений в метаполе _journalx_change_log.

Вывод журнала изменений в шаблоне

Чтобы показать журнал на фронтенде, добавим функцию вывода лога в шаблон single.php или в любом другом месте:

function journalx_display_change_log($post_id) {
    $logs = get_post_meta($post_id, '_journalx_change_log', true);
    if (!$logs) {
        echo '<p>Изменений не найдено.</p>';
        return;
    }

    // Разбиваем на записи по разделителю
    $entries = explode('---', $logs);
    echo '<div class="journalx-change-log"><h3>Журнал изменений</h3><ul>';
    foreach ($entries as $entry) {
        $entry = trim($entry);
        if (empty($entry)) continue;
        echo '<li><pre>' . esc_html($entry) . '</pre></li>';
    }
    echo '</ul></div>';
}

// Вызов в шаблоне single.php
journalx_display_change_log(get_the_ID());

Так вы получите простой и понятный журнал всех изменений контента поста.

Оптимизация и расширение журнала изменений

Для улучшения работы журнала можно:

  • Добавить хранение только диффов (разниц) между версиями — это уменьшит объем хранимых данных.
  • Интегрировать журнал с REST API для удобного доступа и управления через внешние приложения.
  • Добавить уведомления администраторам о важных изменениях.
  • Использовать AJAX для динамического подгрузки журнала на фронтенде без перезагрузки страницы.

Пример AJAX подгрузки журнала

Добавим обработчик AJAX, который вернет журнал в JSON:

function journalx_ajax_get_log() {
    $post_id = intval($_POST['post_id']);
    if (!$post_id) {
        wp_send_json_error('Неверный ID записи');
    }

    $logs = get_post_meta($post_id, '_journalx_change_log', true);
    wp_send_json_success($logs);
}
add_action('wp_ajax_journalx_get_log', 'journalx_ajax_get_log');
add_action('wp_ajax_nopriv_journalx_get_log', 'journalx_ajax_get_log');

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

Вывод

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
WooCommerce: удаление товаров из корзины через AJAX с подтверждением пользователя
18.05.2026
Как создать автоматический журнал активности пользователей в WordPress
21.02.2026
Как сделать автоматическое разделение статьи на страницы в WordPress
23.01.2026
Как создать автоматическое отмечивание новых статей в WordPress
21.03.2026
Как использовать WooCommerce REST API для управления заказами: практическое руководство
07.05.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙