Ведение журнала изменений — важная задача для сайтов на 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 дней.