Редакции записей в WordPress и как ими управлять
Редакции записей или страниц в WordPress — это автоматические резервные копии этих записей или страниц, создаваемые через определенный интервал времени и при обновлении записи или страницы.
Автоматические редакции
По умолчанию, автоматические резервные копии создаются двух видов: каждые 15 секунд в браузере пользователя и каждые 60 секунд в базе данных сайта.
Если Вы внесете изменение в запись или страницу и, подождав 15 секунд, закроете страницу редактирования, то при следующем открытии Вы получите сообщение с предложением восстановить резервную копию.
Аналогично работает и сохранение копий в базу данных сайта, только в этом случае информация о сохраненной копии будет отображаться в нижней части визуального редактора.
Редакции, создаваемые при обновлении записи
Если сделать несколько изменений в содержимом записи или страницы, нажимая после каждого кнопку «Обновить», можно заметить, что в блоке «Опубликовать» появилась строка «Редакции».
Цифра рядом с ней отображает количество созданных редакций для этой записи или страницы. Если перейти по ссылке «Просмотреть», мы сможем увидеть все созданные редакции и при необходимости восстановить более раннюю версию.
Также, мы можем сравнить любые две редакции, отметив галочку «Сравнить любые две редакции».
Красным цветом отображается удаленное содержимое, а зеленым — добавленное.
Настройка редакций
На данный момент, WordPress не предоставляет возможностей, чтобы отключить или изменить интервал создания резервных копий в браузере пользователя (каждые 15 секунд), но для копий, сохраняемых в базу данных сайта такие средства есть.
Для редактирования исходного кода потребуется специальный редактор, например, Notepad++. Также, потребуется FTP-клиент, например, FileZilla.
Настройка редакций с помощью файла wp-config.php
Подключаемся к сайту по FTP. Данные для доступа можно уточнить в поддержке Вашего хостинга.
Находим файл wp-config.php, расположенный в корневой папке сайта, и скачиваем его себе на компьютер.
В зависимости от потребностей, мы можем:
- изменить интервал сохранения копий
1define( 'AUTOSAVE_INTERVAL', 180 ); //Интервал в секундах, по умолчанию, 60 - ограничить количество создаваемых копий
1define( 'WP_POST_REVISIONS', 4 ); //Для записей и страниц будут хранится только 4 последние редакции - или совсем отключить создание редакций
1define( 'WP_POST_REVISIONS', false );
Открываем скачанный файл и задаем значение константам в соответствии с нашими предпочтениями.
Проверяем, что кодировка файла установлена в значении UTF-8 без BOM, сохраняем файл и заливаем обратно на сервер.
Теперь для каждой записи и страницы будет хранится не более 4 редакций, а автоматическая копия будет создаваться раз в 3 минуты.
Настройка редакций с помощью php-кода
Если вариант с wp-config.php не подходит, то можно ограничить количество редакций с помощью создания небольшого php-плагина и фильтра wp_revisions_to_keep.
1 2 3 4 5 |
<?php function dco_wp_revisions_to_keep( $revisions ) { return 4; //Для записей и страниц будут хранится только 4 последние редакции } add_filter( 'wp_revisions_to_keep', 'dco_wp_revisions_to_keep' ); |
Также, мы можем задать максимальное количество редакций в зависимости от типа записи.
1 2 3 4 5 6 7 8 9 |
<?php function dco_wp_revisions_to_keep( $revisions, $post ) { if ( 'page' == $post->post_type ) { return 10; // Для страниц } else { return 4; // Для записей } } add_filter( 'wp_revisions_to_keep', 'dco_wp_revisions_to_keep', 10, 2 ); |
При желании, мы можем доработать плагин и показывать пользователю уведомление при достижении максимального количества редакций.
1 2 3 4 5 6 7 8 9 10 11 |
function dco_admin_notices() { global $post; $revisions = wp_get_post_revisions( $post->ID ); if ( isset( $post ) && wp_revisions_to_keep( $post ) <= count( $revisions ) && get_current_screen()->base == 'post' ) { ?> <div class="error"> <p>Достигнуто максимальное количество редакций. При дальнейшем редактировании наиболее старые редакции будут автоматически удаляться.</p> </div> <?php } } add_action( 'admin_notices', 'dco_admin_notices' ); |
Создаем новый файл, помещаем в него необходимый код после открывающего тега «<?php» и загружаем файл на сервер в папку /wp-content/mu-plugins/. Если папки «mu-plugins» нет, то её нужно будет создать. Скачать файл с примерами кода.
PHP-файлы, помещенные в папку «mu-plugins», подключаются автоматически и не требуют активации. Результат работы плагина можно увидеть на странице редактирования записи или страницы.
Удаление редакций
Удалить существующие редакции можно с помощью следующего кода
1 2 3 4 5 6 7 8 9 |
global $wpdb; $wpdb->query( " DELETE a,b,c FROM $wpdb->posts a LEFT JOIN $wpdb->term_relationships b ON (a.ID = b.object_id) LEFT JOIN $wpdb->postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision' " ); |
Поместить его можно в файл functions.php активной темы или в новый файл в папке mu-plugins. После того, как редакции будут удалены, код необходимо убрать. Скачать файл delete-revisions.php.
Управление редакциями с помощью плагинов
Если управление редакциями путем вставки кода по какой-то причине не подходит, в каталоге можно найти плагины, имеющие данный функционал.
← Вернуться в блог