以下是常用的sql命令,用于删除帖子修订和清理wp数据库:
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\';
我如何修改它以保持最后3次修订?以下是常用的sql命令,用于删除帖子修订和清理wp数据库:
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\';
我如何修改它以保持最后3次修订?通过将此行添加到wp-config.php
文件:
define( \'WP_POST_REVISIONS\', 3 );
这一行应该将新帖子限制为三次修订,但它不会遍历您的数据库并将其清理干净。您找到的用于从WordPress数据库中删除旧版本的SQL代码段存在问题,您可以在this thread on WordPress.org. 该线程概述了问题,并提供了备选方案。该线程还审查了一些将为您执行此操作的插件。
这里有一种删除所有修订的方法,除了last one (我知道这不是最初问的问题,但我希望这有助于其他人使用类似的解决方案)。
Step 1. 使用要保留的修订创建临时表:
DROP TABLE IF EXISTS t_keep_revisions;
CREATE TEMPORARY TABLE t_keep_revisions AS (
SELECT
MAX(p.ID) as ID,
p.post_parent
FROM wp_posts p
WHERE p.post_type = \'revision\'
GROUP BY p.post_parent
ORDER BY p.post_parent
);
Step 2. 删除所有修订帖子,ID位于上表中的帖子除外DELETE FROM wp_posts
WHERE post_type = \'revision\'
AND ID NOT IN (
SELECT ID
FROM t_keep_revisions
);
Step 3. 从wp\\U Posteta中删除孤立元数据DELETE FROM wp_postmeta
WHERE post_id NOT IN (
SELECT ID FROM wp_posts
)
我当前有一个具有以下架构的数据库:表:文章列:ID、标题、作者、内容表:作者列:ID、AuthorName、EmailAddress表:类别列:ID、CategoryName我有兴趣把这个转移到WordPress上。我实际上不需要保留authors或categories表,因为我们正在迁移中修改这些部分。但是,我确实需要保存articles表的某些行(或者所有行,如果更容易的话)。这包括保持作者ID与之链接。我愿意手动查询,以选择要移到新表的行,但我不确定应该在哪里执行此操作。因此,我的问题是:如何以最简