Answers:
与他的回答中的死锁查询不同,这是一个使用起来更安全的查询,并且将从postmeta和term_relationship中删除相关条目。
将{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);
还有一个插件WP Optimize可以帮助您完成此操作
从网站:
WP-Optimize是WordPress 2.9 ++数据库清理和优化工具。不需要PhpMyAdmin来优化数据库表。
它使您可以单击几下删除帖子修订,垃圾邮件队列中的评论以及未经批准的评论。
要删除所有的WordPress版本,可以使用以下查询:
DELETE FROM wp_posts WHERE post_type = "revision";
DELETE FROM wp_n_posts WHERE post_type = "revision"
;连续n次吧?但这很无聊:(
您还可以将此代码添加到主题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
已在中设置了limit wp-config.php
,如果尚未设置,则将参数传递给限制发布修订的函数。在以上示例中,帖子仅限于3个修订版本。
当为不知道如何(或不想)添加代码的人构建主题时,这是一个很好的解决方案。
感谢您的回答,markratledge。关于{id}的语法中的某些内容对我不起作用。我将{id}更改为4009,这是我的帖子ID之一,但没有成功。我在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';
很好。