Ведение журнала изменений для статей на WordPress — важная задача для блогеров, редакторов и команд контента. Это позволяет видеть, кто и когда вносил правки, возвращать предыдущие версии и анализировать историю публикаций. В этой статье подробно разберём, как добавить отслеживание изменений в статьях WordPress с помощью кода и плагинов, а также интегрировать журнал активности в интерфейс админки.
Почему важно вести журнал изменений статей в WordPress
Стандартный функционал WordPress уже включает ревизии — автоматические сохранения изменений, которые можно просмотреть и восстановить. Однако по умолчанию эти данные хранятся скрытно, без подробной информации о пользователе и времени правок в удобном виде. Это неудобно для командной работы, когда нужно быстро контролировать изменения и видеть, кто внёс конкретное исправление.
Добавление расширенного отслеживания позволяет:
- Вести подробный журнал изменений с указанием автора, времени и описания изменений.
- Получать уведомления о редактировании важных статей.
- Интегрировать историю изменений в интерфейс для удобного просмотра.
- Автоматически создавать бэкапы версий при каждом изменении.
- Анализировать активность редакторов и авторов.
Далее рассмотрим, как сделать это с помощью плагинов и кастомного кода.
Использование плагинов для отслеживания изменений в статьях
Плагин Simple History
Simple History — один из лучших плагинов для ведения журнала активности в WordPress. Он отображает подробную историю изменений, включая публикации, обновления, удаление, входы пользователей и многое другое.
Для установки:
- Перейдите в админке WordPress в раздел «Плагины» » «Добавить новый».
- Введите в поиске «Simple History».
- Установите и активируйте плагин.
После активации журнал будет доступен в разделе Консоль » Simple History. Здесь можно фильтровать события по типу, смотреть детали и экспортировать историю.
Плагин можно настроить для записи именно изменений в статьях, включая данные о пользователях и времени. Также он позволяет выводить журнал на фронтенде (например, для администраторов) через шорткод или виджет.
Подробнее и скачать плагин с официального репозитория: https://wordpress.org/plugins/simple-history/
Плагин WP Activity Log
WP Activity Log — мощный инструмент для комплексного отслеживания активности в WordPress, включая изменение контента, пользовательские действия и безопасность.
Особенности:
- Подробные логи с указанием IP, пользователя, времени и изменений.
- Уведомления по email о важных событиях.
- Фильтры и поиск по журналу.
- Интеграция с WooCommerce, BuddyPress и другими расширениями.
Плагин платный, но базовая версия доступна бесплатно. Установка аналогична Simple History.
Официальный сайт: https://www.wpactivitylog.com/
Как добавить простое отслеживание изменений через код в functions.php
Если нужен минималистичный вариант без плагинов, можно добавить простой журнал изменений статей в пользовательскую таблицу или метаполя. Рассмотрим пример записи времени и автора последнего обновления в метаполе статьи.
function journalx_track_post_update( $post_ID, $post_after, $post_before ) {
// Проверяем, что это обновление записи типа 'post'
if ( $post_after->post_type !== 'post' ) {
return;
}
// Получаем ID автора правок
$user_id = get_current_user_id();
$user_info = get_userdata( $user_id );
$user_name = $user_info ? $user_info->user_login : 'guest';
// Создаём массив с данными об изменении
$changes = array(
'time' => current_time( 'mysql' ),
'user' => $user_name,
'post_id' => $post_ID,
);
// Получаем существующий журнал из метаполя
$history = get_post_meta( $post_ID, '_journalx_edit_history', true );
if ( ! is_array( $history ) ) {
$history = array();
}
// Добавляем новую запись в начало массива
array_unshift( $history, $changes );
// Ограничиваем длину журнала 10 последними изменениями
$history = array_slice( $history, 0, 10 );
// Обновляем метаполе
update_post_meta( $post_ID, '_journalx_edit_history', $history );
}
add_action( 'post_updated', 'journalx_track_post_update', 10, 3 );
Этот код добавляет в метаполе _journalx_edit_history последние 10 изменений с указанием времени и автора. Далее можно вывести эту информацию в админке или в шаблоне статьи.
Вывод журнала изменений в интерфейсе админки
Чтобы удобно видеть историю изменений прямо на странице редактирования поста, добавим метабокс с выводом журнала.
function journalx_add_edit_history_metabox() {
add_meta_box(
'journalx_edit_history_box',
'Журнал изменений',
'journalx_display_edit_history',
'post',
'side',
'low'
);
}
add_action( 'add_meta_boxes', 'journalx_add_edit_history_metabox' );
function journalx_display_edit_history( $post ) {
$history = get_post_meta( $post->ID, '_journalx_edit_history', true );
if ( empty( $history ) ) {
echo '<p>Изменения не зафиксированы.</p>';
return;
}
echo '<ul style="font-size:12px;">';
foreach ( $history as $change ) {
echo '<li><strong>' . esc_html( $change['user'] ) . '</strong>: ' . esc_html( $change['time'] ) . '</li>';
}
echo '</ul>';
}
Теперь при редактировании статьи в боковой панели будет отображаться журнал последних изменений.
Интеграция с плагином JournalX для расширенного журнала
Если вы используете тему или плагины из экосистемы WPSHOP, например JournalX, можно дополнительно подключить журнал изменений к функционалу ленты новостей и журналов активности.
Плагин JournalX поддерживает кастомные хуки для добавления пользовательских событий в журнал, что позволяет гибко расширять систему отслеживания изменений без потери производительности и с возможностью визуализации на фронтенде.
Заключение: выбор решения и рекомендации
Для большинства сайтов с небольшой командой подойдет плагин Simple History — он прост, функционален и бесплатен. Если нужна глубокая аналитика и уведомления — стоит рассмотреть WP Activity Log.
Для разработчиков и кастомных проектов удобен собственный код, позволяющий гибко настраивать формат и место хранения журнала изменений.
Важно помнить о регулярном бэкапе сайта и оптимизации базы данных — журналы изменений могут со временем занимать много места.
Используйте возможности WordPress и WPSHOP для эффективного управления контентом и контроля качества публикаций.