Отключение ревизий (post revisions) в WordPress

Не так давно в WordPress появилась функция сохранения всех версий постов с возможностью сравнения изменений и отката версий — ревизии — почти как в WikiPedia. Функция, безусловно, хорошая, но её реализация мне не нравится. А именно: запись всех ревизий в таблицу wp_posts вместе с основным контентом. В итоге таблица постов раздувается в 2-5 раз, что крайне негативно сказывается на работе системы. Ну зачем-зачем!? Ревизии нужны только в административном режиме — почему бы не сделать отдельную таблицу для этого?

И вообще, они имеют смысл лишь тогда, когда несколько человек управляют сайтом. Но нет даже стандартной возможности отключить запись ревизий. Приходится вносить изменения в файлы системы и удалять вручную ненужные записи в БД:

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`)
WHERE `a`.`post_type` = "revision";

Сегодня на Ultra-Music удалил таким образом 660 записей — представляете!

Короче, решено было написать плагин, который при активации почистит таблицы, удалив (внимание!) все записи ревизий, и отключит возможность записи новых ревизий. Итак, вуаля, первый плагин, который я запостил на wordpress.org — Disable Revisions.

Если бы я выложил все плагины, которые писал, было б уже порядком двух десятков :)

07.12.2008. Раздел: WordPress. Ключевые слова: .

Комментариев: 18 RSS

  1. Pingback: Disable Revisions на блоге Антипланета | The Chronicles of Crash

  2. Pingback: На Ultra-Music обновления — Ultra-Music


  3. Az написал(а):

    так выложи ;)


  4. Slaver написал(а):

    Так выложил же :)


  5. Az написал(а):

    я про остальные.


  6. Slaver написал(а):

    Аааа… Ну там не так много прикладного характера плагинов — большинство писалось под конкретные проекты и задачи. Ну что-нибудь еще выложу :)


  7. ioni написал(а):

    А у меня вопрос – плагин одноразово это делает – или при загрузке каждого поста или по крону?


  8. Slaver написал(а):

    Плагин один раз очищает базу от ревизий, а потом просто отключает возможность создавать новые ревизии вообще, пока активировн.


  9. ioni написал(а):

    Отлично!


  10. Slaver написал(а):

    Бэкап все равно нужно сделать :)


  11. va написал(а):

    спасибо


  12. Slaver написал(а):

    На здоровье! :)


  13. aliaksei написал(а):

    Нашел как-то в конфиге :)

    // define(‘WP_POST_REVISIONS’, ’5′); // кіраванне колькасцью рэвізій. 0-адключа іх увогуле, кожная іншая лічба пазначае максімальную колькасць рэвізій кожнага запісу.


  14. Slaver написал(а):

    Я в плагин включил отключение (хи-хи) WP_POST_REVISIONS, но в 2.7, как я понимаю, этого мало, поэтому и другой метод использую.


  15. Crash O. написал(а):

    В ВП2.7 походу не работает, когда будет обновление? :)


  16. Slaver написал(а):

    Я его для WP 2.7 RC2 делал, а потом только на 2.6. проверял. Сейчас тут финальная 2.7 стоит – ревизии не создаются!


  17. 100kotoff написал(а):

    можно добавить (или раскомментить) строчку в config.php
    define(‘WP_POST_REVISIONS’, false);
    и будет вам счастие – тотальное отключение ревизий постов. Останется только базу данных почистить.


  18. Сергей написал(а):

    В версии 3.0 не работает. Как быть?

Оставить комментарий