В WordPress есть такое понятие как ревизии. Это копии записи, которые хранятся на всякий случай. На какой? Ну, например, если во время написания записи, у вас отключили электричество или поломался инет вместе с компьютером. Да мало ли что может случиться в процессе написания вашего драгоценного поста…
Поэтому многие (возможно) воспринимают ревизии как нечто полезное.
А вот мне не нравится, когда ревизии сохраняются. Попробую объяснить почему именно. Ну и расскажу как их убить навсегда :)
Во-первых, каждая ревизия хранится в таблице с постами со статусом revision. Что это значит? Всего лишь то, что если у вас 100 постов, каждый из которых вы пишите 5 минут — то у вас по умолчанию около 5 ревизий (они сохраняются каждые 60 секунд). Это значит в БД вместо 100 записей — 500.
Да, цифры могут отличаться, но это же грубый подсчет :)
Получается база данных разрастается, и это не может не сказываться на времени выполнения запросов. И, что более важно, на ее размере. Ну, и разумеется, это затрудняет ручное редактирование БД, которым я иногда пользуюсь :)
Во-вторых, иногда ID статьи может служить для чего-то большего, чем для внутреннего хранения записей. Его, к примеру, можно вставлять в URL записи. С каждой новой ревизией ID записи увеличивается на 1. И может оказаться так, что при наличии тех самых 100 статей, ID следующей будет 501 вместо 101. Конечно, все это выглядит некрасиво лишь для тех, кто знает SQL и может работать с БД напрямую.
Существуют много плагинов, чтобы отключить ревизии. Как минимум штук пять. Проблема в том, что они их не отключают полностью :) Собственно, поэтому я все и пишу.
Так как же отключить ревизии?
На самом деле все очень просто, даже плагины ставить не надо. Нужно сделать всего лишь две вещи:
- В wp-config.php добавить строчку (или раскомментировать)
define('WP_POST_REVISIONS', 0);
- Также нам нужно будет открыть файл functions.php (разумеется для текущей темы оформления) и добавить вниз код:
function disable_autosave() { wp_deregister_script('autosave'); } add_action('wp_print_scripts', 'disable_autosave');
1 2 3 4 | function disable_autosave() { wp_deregister_script('autosave'); } add_action('wp_print_scripts', 'disable_autosave'); |
Как удалить ревизии?
Если ваш сайт работает уже довольно долго — то вы можете очистить БД от ненужных ревизий вручную.
С этой задачей большинство плагинов для работы с ревизиями справляется. Ставьте любой :)
Ну а для тех, кто уже успел зайти в какой-нибудь phpmyadmin проще выполнить SQL команду:
DELETE FROM `wp_posts` WHERE post_type='revision'
И все сохраненные ревизии исчезнут.
P.S. Все это проверено и работает на версии WordPress 3.0.1