Как отключить ревизии и автосохранение в WordPress. Как удалить все ревизии записей из базы
Отключаем ревизии (редакции) и автосохранение записей на сайте (блоге) WordPress. Удаляем все ревизии из базы при помощи phpMyAdmin.
Что такое "ревизии" и "автосохрание" записей в WordPress? Это "бяки", которые попросту загружают базу лишними строками. Разница у них небольшая: ревизий (редакций) записей много, а автосохраненная запись одна. Несомненно польза от них есть, но для простого блогера, такого как я, они не нужны (и корзина тоже).
К сожалению, разработчики WordPress не предоставили нам такой возможности, чтобы мы могли одним кликом отключить (или удалить) эти "бяки", поэтому придется немного "попотеть" :)
Отключаем ревизии (редакции)
Чтобы отключить ревизии записей, вписываем этот код в файл конфигураций wp-config.php:
/* Отключаем редакции*/ define( 'WP_POST_REVISIONS', 0 );
или, если хотите просто уменьшить их количество, к примеру до 4:
define( 'WP_POST_REVISIONS', 4 );
ВАЖНО: данные строчки кода вписываем перед строчкой "/* Это всё, дальше не редактируем. Успехов! */". Вот как у меня:
define( 'WP_POST_REVISIONS', 0 ); /* Это всё, дальше не редактируем. Успехов! */
Отключаем автосохранение записей
Следующий код вписываем в файл function.php вашей темы:
// Отключаем автосохранение function disableAutoSave(){ wp_deregister_script('autosave'); } add_action( 'wp_print_scripts', 'disableAutoSave' );
Удаляем ревизии (редакции) записей из базы при помощи phpMyAdmin
Ну а теперь приступим к очистке базы от лишний копий записей, если таковые имеются. В базе редакции записей имеют тип "revision", это в столбце "post_type". И перед тем как посылать запрос на поиск и удаление этих строк, сделайте на всякий случай бэкап базы данных.
Но сперва удалим мета-данные (ключевые слова и описание) и таксономию (порядок, связи) ревизий при помощи запросов ниже.
DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = 'revision' AND post_name LIKE '%revision%'); DELETE FROM wp_term_relationships WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_type = 'revision' AND post_name LIKE '%revision%');
И наконец сами ревизии:
DELETE FROM wp_posts WHERE post_type = 'revision' AND post_name LIKE '%revision%';
Более наглядно: зайдите в phpMyAdmin, дальше во вкладку "SQL" и в поле вставляем запрос и жмем "Вперед". И так каждый запрос.
Как видите ревизий было найдено и удалено 36, а вот мета-данных у меня не было, но все равно на всякий случай проверьте. И на этом все, все пока.