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

Ведение журнала изменений — важная задача для сайтов на WordPress, особенно если вы ведёте журнал, новостной портал или корпоративный блог, где часто обновляются материалы. Автоматический журнал изменений позволяет отслеживать, кто и когда вносил правки, какие именно изменения были сделаны. Это существенно облегчает контроль качества контента и даёт возможность быстро вернуться к предыдущей версии статьи.

Зачем нужен автоматический журнал изменений в WordPress

Журнал изменений — это история правок для каждой записи или страницы. Без него вы рискуете потерять важную информацию о том, как развивался материал. Особенно это актуально, если над сайтом работают несколько редакторов или авторов.

Основные преимущества автоматического журнала изменений:

  • Отслеживание авторства и времени каждой правки;
  • Возможность сравнивать версии статьи и видеть изменения;
  • Быстрая отмена нежелательных правок или восстановление предыдущих версий;
  • Повышение прозрачности работы редакционной команды;
  • Автоматизация процесса без необходимости ручного ведения записей.

Использование встроенного функционала WordPress для версии записей

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

Функции, которые помогут использовать базовый функционал:

  • wp_get_post_revisions( $post_id ) — получение массива объектов ревизий для указанного поста;
  • wp_save_post_revision( $post_id ) — сохранение новой ревизии;
  • Функции для сравнения версий, например, wp_text_diff().

Пример вывода списка изменений для конкретной записи:

function journalx_get_post_revision_log( $post_id ) {
    $revisions = wp_get_post_revisions( $post_id );
    if ( empty( $revisions ) ) {
        return 'Ревизий не найдено.';
    }

    $log = '<ul>';
    foreach ( $revisions as $revision ) {
        $author = get_userdata( $revision->post_author );
        $date = date_i18n( 'd.m.Y H:i', strtotime( $revision->post_date ) );
        $log .= "<li>Изменено: {$date}, Автор: {$author->display_name}</li>";
    }
    $log .= '</ul>';

    return $log;
}

Вы можете вызвать journalx_get_post_revision_log( get_the_ID() ) в шаблоне для вывода списка изменений.

Расширение функционала с помощью плагина Clearfy Pro

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

Особенности модуля журнала изменений в Clearfy Pro:

  • Подробное отображение изменений с возможностью просмотра конкретных правок;
  • Настройка количества сохраняемых ревизий для оптимизации базы данных;
  • Уведомления администраторов при значительных изменениях;
  • Интеграция с другими инструментами Clearfy для комплексной оптимизации.

Как подключить модуль журнала изменений в Clearfy Pro

После установки и активации Clearfy Pro перейдите в настройки плагина и включите модуль «Журнал изменений». Вы сможете настроить параметры хранения ревизий и получить удобный интерфейс для просмотра истории правок.

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

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

function journalx_save_change_log( $post_id ) {
    // Проверяем, чтобы не было автосохранения
    if ( wp_is_post_autosave( $post_id ) || wp_is_post_revision( $post_id ) ) {
        return;
    }

    $post = get_post( $post_id );
    $current_user = wp_get_current_user();
    $date = current_time( 'mysql' );

    $changes = get_post_meta( $post_id, '_journalx_change_log', true );
    if ( ! is_array( $changes ) ) {
        $changes = [];
    }

    $changes[] = [
        'user' => $current_user->display_name,
        'date' => $date,
        'title' => $post->post_title,
        'status' => $post->post_status
    ];

    update_post_meta( $post_id, '_journalx_change_log', $changes );
}
add_action( 'save_post', 'journalx_save_change_log' );

Далее для вывода журнала изменений можно использовать функцию:

function journalx_display_change_log( $post_id ) {
    $changes = get_post_meta( $post_id, '_journalx_change_log', true );
    if ( empty( $changes ) ) {
        echo 'Изменения не найдены.';
        return;
    }

    echo '<ul>';
    foreach ( $changes as $change ) {
        echo "<li>{$change['date']} - {$change['user']} изменил заголовок на "{$change['title']}" (статус: {$change['status']})</li>";
    }
    echo '</ul>';
}

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

Кроме Clearfy Pro, есть и другие плагины, которые помогут вести журнал изменений:

  • Simple History — показывает историю изменений в админке, кто и когда редактировал записи, входил в систему и многое другое.
  • WP Activity Log — мощный инструмент для мониторинга активности пользователей, включая изменения в контенте.
  • Revisionize — позволяет создавать драфты новых версий записей для последующего опубликования.

Все эти плагины можно найти и установить из репозитория WordPress или с сайта WPSHOP.

Советы по оптимизации журнала изменений и базы данных

Журналы изменений могут занимать много места в базе данных, особенно на крупных проектах. Чтобы избежать тормозов сайта, советую:

  • Ограничить количество хранимых ревизий с помощью константы WP_POST_REVISIONS в wp-config.php (например, define('WP_POST_REVISIONS', 10);).
  • Регулярно очищать старые ревизии с помощью плагинов оптимизации или SQL-запросов.
  • Кэшировать вывод журнала изменений, если он отображается на фронтенде.

Например, для удаления старых ревизий можно использовать запрос:

DELETE FROM wp_posts WHERE post_type = 'revision' AND post_date < NOW() - INTERVAL 30 DAY;

Это удалит ревизии старше 30 дней.

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

⭐⭐⭐⭐⭐
WooCommerce: удаление товаров из корзины через AJAX с подтверждением пользователя
18.05.2026
Как изменить URL адреса сообщений в WordPress без перезагрузки
06.12.2025
Как удалить товар из корзины WooCommerce без перезагрузки страницы
04.05.2026
Как создать автоматический раздел для новостей в WordPress с фильтрацией по категориям
25.12.2025
Как создать интерактивный журнал в WordPress с использованием плагинов и кода
08.02.2026
×
WordPress
дай сайту суперсилу!

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

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