Чистим базу данных WordPress 2.6 от старых версий статей
Одна из особенностей WordPress 2.6 — он хранит старые версии статей в своей базе данных. Это полезно, например, при анализе изменений, внесённых автором в статью.
Честно говоря, мне это никогда нужно не было — лично я считаю, что встраивать в WordPress систему контроля версий — это перебор. Впрочем, это лишь моё мнение. Возвращаемся к теме. К сожалению, WordPress не предоставляет возможности отключения данной функциональности, но в силу тех или иных обстоятельств бывает нужно удалить старые версии статей (например, для уменьшения объёма базы данных).
Написать плагин, удаляющий старые версии статей, у меня пока еще не дошли руки — всё-таки я на отдыхе Но запрос, который чистит базу данных, я всё же составил:
FROM `wp_posts` AS `p`
LEFT JOIN `wp_postmeta` AS `pm`
ON `p`.`ID` = `pm`.`post_id`
LEFT JOIN `wp_comments` AS `c`
ON `p`.`ID` = `c`.`comment_post_ID`
LEFT JOIN `wp_term_relationships` AS `tr`
ON `p`.`ID` = `tr`.`object_id`
WHERE
`p`.`post_type` = 'revision';
OPTIMIZE TABLE
`wp_posts`,
`wp_postmeta`,
`wp_comments`,
`wp_term_relationships`;
Внимание: во всех вышеприведённых запросах предполагается, что используется стандартный префикс таблиц — wp_
.
[...] Ars Longa, Vita Brevis « Удаление старых версий статей из базы данных WordPress [...]
Есть какая-то настройка для файла wp-config.php, при которой ревизии будут отключены.
Да, действительно… Спасибо, я не знал… Просто она не прописана в дефолтном wp-config.php.
foreach ( $default_constants as $c => $v )
@define( $c, $v ); // will fail if the constant is already defined
unset($default_constants, $c, $v);
Немного криво они это сделали — вместо того, чтобы проверять, определена ли константа, они насильно её определяют, полагаясь на то, что PHP не даёт переопределять уже определённые константы.
Я бы тоже не знал об этом, хорошо, что написали на одном из блогов о WordPress. Возможность, получается, недокументированная.