Ведение журнала изменений (changelog) на сайте WordPress — важный инструмент для контроля версий контента, отслеживания правок и информирования пользователей о обновлениях. В этой статье мы подробно разберём, как создать автоматический журнал изменений в WordPress с примерами кода и рекомендациями по использованию плагинов.
Зачем нужен журнал изменений в WordPress
Журнал изменений — это список всех правок, дополнений и удалений, которые были сделаны в статьях, страницах или других типах контента. Он полезен не только для разработчиков и редакторов, но и для пользователей, которые хотят видеть, что изменилось с момента их последнего посещения.
Ключевые преимущества ведения журнала изменений:
- Прозрачность и контроль версий контента.
- Удобство работы редакторов и авторов.
- Повышение доверия пользователей за счёт информирования об обновлениях.
Создание такого журнала вручную — трудоёмкая задача, поэтому автоматизация через плагины и кастомные решения будет оптимальной.
Как создать автоматический журнал изменений: основные подходы
1. Использование плагинов для ведения истории изменений
Существует несколько плагинов, которые позволяют автоматически вести журнал изменений:
- Simple History — фиксирует изменения в админке, включая правки постов и страниц.
- WP Activity Log — мощный инструмент для логирования активности пользователей и изменений контента.
- Revisionize — помогает создавать и публиковать обновления постов, сохраняя их историю.
Плагин Simple History отлично подойдёт для простого и наглядного журнала, а WP Activity Log — для более детального контроля.
2. Кастомная реализация с использованием хуков WordPress
Если нужны гибкие настройки, можно сделать собственный функционал на PHP с использованием хуков, фиксирующих изменения при сохранении постов.
Основной хук — save_post, который срабатывает при создании или обновлении записи. На его основе можно собирать данные о правках и сохранять их в отдельную таблицу или мета-поле.
Пример кода: автоматический журнал изменений с сохранением в метаполе
Ниже пример функции, которая добавляет запись в мета-поле journalx_changelog при каждом обновлении поста. Запись включает дату, автора и краткое описание изменений.
function journalx_save_changelog($post_id, $post, $update) {
// Проверяем, что это не автосохранение и пост нужного типа
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
if ($post->post_type !== 'post') return;
// Получаем текущего пользователя
$user = wp_get_current_user();
// Формируем новую запись для журнала
$new_entry = date('Y-m-d H:i:s') . ' - ' . $user->display_name . ': Обновлена запись "' . $post->post_title . '".';
// Получаем существующий журнал из метаполя
$log = get_post_meta($post_id, 'journalx_changelog', true);
if (!$log) {
$log = [];
}
// Добавляем новую запись в начало массива
array_unshift($log, $new_entry);
// Сохраняем обратно в метаполе
update_post_meta($post_id, 'journalx_changelog', $log);
}
add_action('save_post', 'journalx_save_changelog', 10, 3);Эта функция создаёт массив записей журнала в метаполе, где каждая новая правка добавляется первой. Такой подход прост и не требует создания новых таблиц в базе.
Отображение журнала изменений на сайте
Чтобы показать журнал изменений пользователям, можно создать шорткод, который будет выводить записи из метаполя в виде списка.
function journalx_show_changelog($atts) {
global $post;
$log = get_post_meta($post->ID, 'journalx_changelog', true);
if (!$log) {
return '<p>Журнал изменений пуст.</p>';
}
$output = '<ul class="journalx-changelog">';
foreach ($log as $entry) {
$output .= '<li>' . esc_html($entry) . '</li>';
}
$output .= '</ul>';
return $output;
}
add_shortcode('journalx_changelog', 'journalx_show_changelog');Используйте шорткод [journalx_changelog] в нужном месте поста или страницы, чтобы отобразить журнал изменений.
Расширение функционала: интеграция с плагином Clearfy Pro
Для улучшения производительности и безопасности сайта можно интегрировать ведение журнала с плагином Clearfy Pro, который оптимизирует базу данных и очищает неиспользуемые метаданные. Это позволит избежать перегрузки базы из-за большого количества записей в журнале изменений.
Рекомендуется периодически очищать старые записи и хранить только последние 10-20 изменений для каждого поста. Это можно сделать с помощью функции:
function journalx_limit_changelog_entries($post_id, $max_entries = 20) {
$log = get_post_meta($post_id, 'journalx_changelog', true);
if (count($log) > $max_entries) {
$log = array_slice($log, 0, $max_entries);
update_post_meta($post_id, 'journalx_changelog', $log);
}
}Вызывать эту функцию можно внутри хука save_post, чтобы удерживать журнал в рамках разумных размеров.
Дополнительные советы по ведению журнала изменений
1. Автоматический экспорт и резервное копирование
Для сохранности данных стоит настроить регулярный экспорт журнала изменений, особенно если он хранится в отдельной таблице. Можно использовать плагины резервного копирования с поддержкой пользовательских таблиц.
2. Уведомления об изменениях
Интеграция с плагинами рассылки или собственными функциями отправки email позволит уведомлять администраторов и редакторов о важных правках.
3. Визуализация изменений
Для удобства чтения можно добавлять цветовую отметку новых записей, использовать фильтры по дате или автору и даже подключить сторонние библиотеки для красивого отображения истории.
Итог
Автоматический журнал изменений — мощный инструмент для управления сайтом на WordPress, который поможет контролировать историю правок, повысить прозрачность и облегчить работу редакторской команды. Используйте готовые плагины или создавайте собственные решения на основе хуков и метаполей, чтобы получить максимально подходящий под ваши задачи функционал.
Подробные примеры кода позволяют быстро внедрить такой журнал даже без глубоких знаний PHP. А интеграция с плагинами из WPShop сделает ваше решение ещё более надёжным и удобным.