Від автора: 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 не запуститься, і ви втратите десятиліття постів. Але ви ж зробили бекап…