Эта статья является частью серии, созданной в сотрудничестве с SiteGround . Спасибо за поддержку партнеров, которые делают возможным использование SitePoint.
WordPress предоставляет систему ревизий, которая записывает полную копию каждой страницы и публикует ее после сохранения. Преимущество: вы можете в любое время вернуться к более ранней версии документа и провести сравнение. Или вы можете выяснить, кто виноват в разболтанности и грамматических ошибках.
По умолчанию количество изменений, сохраняемых на странице или в записи, не ограничено. (Обратите внимание, что для каждого редактора выполняется только одно автосохранение — последнее автоматическое сохранение перезаписывает предыдущее.) Каждая редакция требует отдельной строки в таблице posts
WordPress и, возможно, нескольких записей в таблицах term_relationships
и term_relationships
. Это редко проблема для небольших сайтов, но это может повлиять на производительность и эффективность больших установок. В конечном итоге таблицы заполняются избыточными данными, которые никогда не будут использоваться.
Ограничение ревизий
Количество ревизий может быть установлено в файле wp-config.php WordPress. Если вам не известен этот файл, я рекомендую вам обратиться за дополнительной помощью к разработчику. Сделайте копию wp-config.php перед редактированием, потому что небольшая ошибка может сломать ваш сайт WordPress.
Чтобы полностью отключить ревизии, добавьте следующую строку в wp-config.php :
define('WP_POST_REVISIONS', 0);
Чтобы ограничить количество ревизий, измените число на положительное целое число, например, не более десяти ревизий на страницу / пост:
define('WP_POST_REVISIONS', 10);
Чтобы вернуться к неограниченным ревизиям, удалите строку или измените значение на -1
:
define('WP_POST_REVISIONS', -1);
Редакции плагинов
Если редактирование файла кажется слишком сложным, есть несколько плагинов для управления ревизиями . Например, WP Revisions Limit устанавливает предел ревизий таким же образом.
Программно ограничивающие редакции
Фильтр wp_revisions_to_keep
позволяет плагинам или файлу functions.php вашей темы контролировать, сколько ревизий сохраняется для данного поста.
Функция фильтра передается два аргумента:
- количество ревизий по умолчанию, чтобы сохранить
- объект
WP_Post
текущего поста
и должен вернуть количество разрешенных ревизий.
В следующем примере устанавливается ограничение в пять ревизий для сообщений с типом «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_POST_REVISIONS
вскоре после установки WordPress. Однако этот параметр не удалит старые ревизии из базы данных MySQL. Можно очистить старые данные, но помните об опасности. Прежде чем предпринимать какие-либо действия, не забудьте …
СОЗДАЙТЕ СВОЮ БАЗУ ДАННЫХ!
Самый простой вариант — использовать плагин, такой как WP-Optimize, который очищает вашу базу данных WordPress, удаляя ревизии, а также другие оптимизации. Вы можете запустить его один раз или установить регулярное расписание.
Кроме того, вы можете жить опасно и запустить команду SQL для очистки ревизий. Сначала найдите префикс таблицы WordPress — он указан в 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';
Спасибо Майклу Амброзио за предоставление этого исправления, когда мой оригинальный код, хм, сломал некоторые вещи!
Все будет хорошо, у вас будет искристая чистая база данных, а WordPress будет заметно быстрее. Кроме того, WordPress не запустится, и вы потеряли замечательные посты на десятилетия. Но вы сделали резервную копию сначала, конечно …