Управление ревизией страниц и постов в WordPress

Управление ревизией страниц и постов в WordPress

От автора: в WP есть система ревизии, которая делает копии страниц и постов при их сохранении. Преимущество данной системы – можно откатиться к более ранней версии документа в любое время и провести сравнительный анализ. С ее помощью можно узнать, кто виноват в тех или иных спойлерах, а также в грамматических ошибках. Ревизии WordPress, удаление ревизий и управление ими — тема данной статьи.

По умолчанию на одну страницу и пост задано неограниченное количество ревизий. (Обратите внимание, что на один пост от одного редактора делается всего одно автосохранение – последнее автосохранение перезаписывает предыдущее) Для каждой ревизии в WP таблице posts создается новая строка. В таблицах postmeta и term_relationships записей может быть несколько. Для маленьких сайтов такое расточительство останется незаметным, однако на крупных установках это может вызвать снижение производительности и эффективности. Со временем таблицы заполняются избыточными данными, которые никогда не будут использоваться.

Ограничение ревизий

Количество ревизий можно задать в файле wp-cinfig.php. Если вы не слышали про этот файл, рекомендую обратиться к разработчику. Перед редактированием сделайте копию wp-config.php, так как даже малейшая ошибка может сломать WP-сайт.

Добавьте следующую строку в wp-config.php, чтобы полностью выключить ревизии:

define('WP_POST_REVISIONS', 0);

Чтобы ограничить количество ревизий, измените число на положительное целое. Например, не более 10 ревизий на страницу/пост:

define('WP_POST_REVISIONS', 10);

Чтобы вернуть неограниченное количество ревизий, удалите строку или измените значение на -1:

define('WP_POST_REVISIONS', -1);

Плагины по ревизиям

Если редактировать файл для вас слишком сложно, можно установить плагины по ревизиям. Например, WP Revisions Limit задает ограничение по ревизиям схожим образом.

Программное ограничение ревизий

Фильтр wp_revisions_to_keep позволяет плагинам или файлу темы functions.php контролировать количество ревизий для определенного поста.

В функцию фильтра передается два аргумента:

количество ревизий по умолчанию;

объект WP_Post текущего поста.

Функция должна вернуть количество разрешенных ревизий. Код ниже устанавливает ограничение в 5 ревизий на посты типа «custom_post»:

add_filter( 'wp_revisions_to_keep', 'control_revisions', 10, 2 );

function control_revisions($num, $post) {

  if('custom_post' == $post->post_type) $num = 5;
  return $num;

}

С помощью WordPress REST API можно вывести список, получить и удалить ревизии.

Удаление старых ревизий

Методы выше активируется мгновенно, поэтому в идеале необходимо установить WP_POST_REVISIONS сразу после установки WP. Тем не менее, установка не удаляет старые ревизии из базы данных MySQL. Старые данные можно очистить, но тут есть свои опасности. Перед принятием любых действий не забудьте…

Сделать бэкап базы данных!

Самый простой вариант – использовать плагин типа WP-Optimize, который очищает базу данных путем удаления ревизий, а также с помощью других мер оптимизации. Плагин можно запустить один раз или задать расписание.

Для бесстрашных – можно запускать SQL-команду для очистки ревизий. Для начала понадобится найти префикс таблицы – он задан в wp-config.php. Например:

$table_prefix = 'wp_';

Префикс wp_ задан по умолчанию. Мы возьмем префикс wp_, но по необходимости измените ссылки. Для удаления всех ревизий для всех страниц и постов откройте инструмент администрирования MySQL типа phpMyAdmin и выполните следующую SQL-команду:

DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id )
LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN wp_term_taxonomy d ON ( b.term_taxonomy_id = d.term_taxonomy_id )
WHERE a.post_type = 'revision'
AND d.taxonomy != 'link_category';

Все пройдет как по маслу, вы получите сверкающую чистотой базу данных, а WP заметно ускорится. Ну, или WP не запустится, и вы потеряете десятилетия постов. Но вы же сделали бэкап…

Автор: Craig Buckler

Источник: https://www.sitepoint.com/

Редакция: Команда webformyself.

Самые свежие новости IT и веб-разработки на нашем Telegram-канале

WordPress-Профессионал

Посмотрите информацию по API WordPress, благодаря Вы сможете научиться писать плагины и виджеты

Научиться

Метки:

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (1)

  1. Данил

    Запрос по удалению ревизий не рабочий! https://prnt.sc/g7vk5j

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree