Редакции (revisions) в WordPress — важный инструмент для сохранения истории изменений страниц и записей. Однако стандартный механизм редакций не всегда удобен для задач, где нужно автоматически создавать версии постов при изменениях, либо контролировать процесс более тонко. В этой статье мы разберём, как создать собственную систему автоматических редакций постов в WordPress, какие плагины помогут в этом, и приведём примеры кода для реализации.
Что такое редакции в WordPress и зачем нужны автоматические редакции
По умолчанию WordPress сохраняет редакции постов каждый раз, когда вы обновляете запись. Это удобно для восстановления предыдущих версий, если что-то пошло не так. Однако стандартные редакции создаются только при ручном сохранении или автоматическом автосохранении в админке.
Автоматические редакции — это редакции, которые создаются программно по заданным правилам, например, по расписанию, при определённых изменениях в записи, или при публикации контента из внешних источников. Такой подход полезен в проектах с большой командой, где важен контроль версий, или при интеграции с внешними редакторами.
Возможности автоматических редакций позволяют:
- Создавать копии постов по расписанию для бэкапа;
- Сохранять версии при изменении определённых полей или метаданных;
- Обеспечивать контроль изменений при массовом импорте контента;
- Интегрироваться с системами ревью и утверждения контента.
Используемые плагины для управления редакциями в WordPress
Хотя базовый функционал редакций встроен в WordPress, для расширенного управления можно использовать специальные плагины. Рассмотрим несколько полезных вариантов.
1. Revision Manager TMC
Этот плагин позволяет контролировать количество редакций, удалять старые и управлять историей изменений. Подходит для оптимизации базы данных и предотвращения её разрастания.
Особенности:
- Настройка максимального количества редакций по типам записей;
- Удаление старых редакций вручную или по расписанию;
- Интеграция с WP-CLI для автоматизации.
Подробнее и скачать: Revision Manager TMC
2. Simple Revisions Delete
Позволяет быстро удалять все редакции для выбранных постов, что удобно при очистке сайта от лишних данных.
3. Custom Revision Control
Дает возможность настроить правила создания и хранения редакций в зависимости от пользователя, роли или других условий.
Как программно создавать автоматические редакции постов в WordPress
Для создания автоматических редакций можно использовать стандартные функции WordPress с некоторой логикой. Основная функция, отвечающая за создание редакции — wp_save_post_revision(). Она позволяет вручную сохранить редакцию для определённого поста.
Рассмотрим пример функции, которая создаёт редакцию при обновлении поля метаданных:
function wptour_create_revision_on_meta_update( $meta_id, $post_id, $meta_key, $_meta_value ) {
if ( $meta_key === '_wptour_custom_field' ) {
// Создаем редакцию для поста
wp_save_post_revision( $post_id );
}
}
add_action( 'updated_postmeta', 'wptour_create_revision_on_meta_update', 10, 4 );В этом коде при обновлении метаполя _wptour_custom_field автоматически создаётся новая редакция поста. Это позволяет фиксировать важные изменения, даже если сам контент поста не меняется.
Создание автоматических редакций по расписанию с WP Cron
Иногда требуется создавать редакции по расписанию, например, для регулярного сохранения состояния важных страниц. Для этого можно использовать WP Cron и функцию wp_save_post_revision().
Пример кода для ежедневного сохранения редакций для всех публикаций определённого типа:
function wptour_schedule_daily_revision() {
if ( ! wp_next_scheduled( 'wptour_daily_revision_event' ) ) {
wp_schedule_event( time(), 'daily', 'wptour_daily_revision_event' );
}
}
add_action( 'wp', 'wptour_schedule_daily_revision' );
function wptour_create_revisions_for_all_posts() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
);
$posts = get_posts( $args );
foreach ( $posts as $post ) {
wp_save_post_revision( $post->ID );
}
}
add_action( 'wptour_daily_revision_event', 'wptour_create_revisions_for_all_posts' );Этот код настроит ежедневное событие, которое будет создавать редакции для всех опубликованных постов. Такой подход полезен для проектов с важными постоянными обновлениями.
Как просматривать и восстанавливать редакции
Стандартный интерфейс WordPress предоставляет удобный просмотр редакций в редакторе поста. Однако при большом количестве версий можно использовать плагины с расширенным функционалом:
- WP Revisions Control — позволяет ограничивать количество редакций и быстро находить нужные версии;
- Revisionary — плагин для управления редакциями с возможностью утверждения изменений перед публикацией;
- WPRemark — может использоваться для автоматического комментария и модерации изменений.
Например, с Revisionary можно настроить рабочий процесс, при котором редакции создаются и проходят проверку, а затем публикуются только после утверждения.
Советы по оптимизации работы с редакциями
Редакции занимают место в базе данных, что может замедлить работу сайта. Чтобы избежать проблем, рекомендуем:
- Ограничивать количество редакций для каждого поста с помощью плагинов или фильтров;
- Регулярно очищать старые и ненужные редакции через WP-CLI или плагины;
- Создавать редакции только для важных изменений с помощью программной логики;
- Использовать кеширование и оптимизацию базы данных.
Пример фильтра ограничения количества редакций:
function wptour_limit_revisions( $num, $post ) {
return 5; // максимум 5 редакций на пост
}
add_filter( 'wp_revisions_to_keep', 'wptour_limit_revisions', 10, 2 );Вывод
Автоматические редакции постов в WordPress — мощный инструмент для контроля версий и защиты контента. Правильная настройка и использование расширенных методов создания редакций позволят улучшить рабочие процессы, особенно в крупных проектах с несколькими авторами и сложными сценариями публикации.
Для расширенного управления редакциями рекомендуем обратить внимание на плагины Revision Manager TMC и WPRemark, которые помогут автоматизировать процессы и поддерживать базу данных в порядке.