Как удалить пост ревизии?

9

Я не установил ограничение на количество ревизий, из-за чего некоторые из моих постов имеют более 20 ревизий, так как удалить эти ревизии?

Кстати, я использую WPMU и у меня много блогов, так как удалить ревизии WordPress для всех моих блогов?

hugemeow
источник

Ответы:

10

Это гораздо более безопасный запрос, и он удалит связанные записи из postmeta и term_relationship, в отличие от запроса deathlocks в его ответе.

Измените {id} на id каждой таблицы сообщений блога. Вы можете объединить этот запрос для одновременного запуска всех таблиц записей, но сначала попробуйте выполнить это для одной таблицы. Я использовал это много раз на одной установке WP.

DELETE a,b,c
FROM wp_{id}_posts a
LEFT JOIN wp_{id}_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_{id}_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'

После запуска оптимизируйте базу данных в phpmyadmin.

И добавьте эту строку в верхней части wp-config.php, чтобы предотвратить будущие изменения:

define('WP_POST_REVISIONS', 0);

или сохранить одну ревизию:

define('WP_POST_REVISIONS', 1);
markratledge
источник
Вы правы, это тоже очень эффективно ... опубликовал мой ответ в спешке и тоже не заметил части WP MU. +1.
Deathlock
а как убрать ревизии кроме скажем 3 последних?
Матеил
2

Существует также плагин WP Optimize, который может помочь вам сделать это.

С веб-сайта:

WP-Optimize - это инструмент для очистки и оптимизации баз данных WordPress 2.9 ++. Для оптимизации таблиц базы данных не требуется PhpMyAdmin.

Позволяет удалять ревизии постов, комментарии в очереди спама, неподтвержденные комментарии за несколько кликов.

darronz
источник
Пожалуйста, опишите, что делает плагин и как он решает проблему.
fuxia
1
Есть много плагинов, которые очищают ревизии и оптимизируют без phpmyadmin; ни одно из них не указано для работы с WPMU или мультисайтом.
markratledge
этот плагин будет вредить моей базе данных?
огромный
Я использовал плагин на нескольких сайтах, которые я запускаю без проблем. Но всегда хорошей идеей будет сначала сделать резервную копию вашей базы данных (но это просто лучшая практика).
Дарронз
0

Чтобы удалить все ваши ревизии Wordpress, вы можете использовать этот запрос:

DELETE FROM wp_posts WHERE post_type = "revision";

deathlock
источник
У меня есть более 100 блогов на wpmu, поэтому я должен работать DELETE FROM wp_n_posts WHERE post_type = "revision"; для n раз, верно? но это довольно скучно :(
огромный день
0

Вы также можете добавить этот код в functions.phpфайл вашей темы :

if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', 3);
if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', false);

Этот код проверяет, был ли установлен WP_POST_REVISIONSлимит wp-config.php, а если нет, то передает параметр в функцию, которая ограничивает пост-ревизии. В приведенном выше примере сообщения ограничены 3 ревизиями.

Это хорошее решение при создании тем для людей, которые не знают, как (или не хотят) добавлять код.

Взято с wp-functions.com

NickMcB
источник
2
Этот ответ не говорит об удалении ревизий. Но это хороший совет о том, как отключить ревизии для будущего контента.
Ниламбар Шарма
0

Вы можете использовать плагин WP Sweep для очистки пост-ревизий. После активации плагина перейдите в Инструменты »Очистка, чтобы очистить базу данных WordPress.

Ашин
источник
0

Спасибо за ответ, markratledge. Что-то в синтаксисе относительно {id} не работает для меня. Я изменил {id} на 4009, один из моих почтовых идентификаторов, но безуспешно. Я нашел решение на https://dev-notes.eu/2017/11/manage-and-safely-delete-revisions-in-wordpress/

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';

Это работало нормально.

Феликс
источник