我开设了一个博客,社区可以发布时间敏感的社区链接(体育比分等)。
经过一段时间后,这些帖子不再有用了,所以我想通过MySQL查询批量删除它们,但我不知道怎么做。我想完全摆脱这些帖子不仅仅是从the wp_posts
表中删除,对吗?每个帖子还有其他工作表,不在吗?
我尝试了几个auto-
或batch-delete
个插件,但它们的工作时间不到一半。
请您提供MySQL查询,以便从所有相关表格中删除超过X天的帖子及其作品吗?
答案 0 :(得分:0)
如果不删除帖子,你只会将它们标记为已删除或草稿?您将获得相同的最终结果,但不会冒破坏数据库的风险。
当然,从长远来看,这将使您的数据库非常大,但对我来说这似乎是一种更简单,更安全的方法。作为奖励,任何信息都不会丢失。
编辑。
另一个方法可能是将帖子移到一个单独的类别,但如果你想像拆迁人那样做,那也很好: - )
1) Find all eligible posts and their attachments
SELECT wp_posts.ID, att.ID
FROM wp_posts
LEFT JOIN wp_posts att ON att.post_parent = wp_posts.ID
WHERE wp.posts.post_date < EXPIRATION_DATE;
2) Find all related comments
SELECT wp_comments.comment_ID
FROM wp_comments
WHERE comment_post_ID IN ( <post ID:s selected in 1)> )
3) Delete all meta related to posts and comments, then comments, then posts
DELETE FROM wp_commentmeta WHERE comment_id IN ( <comment ID:s selected in 2)> )
DELETE FROM wp_postmeta WHERE post_id IN ( <post ID:s selected in 1)> )
DELETE FROM wp_term_relationships WHERE object_id IN ( <post ID:s selected in 1)> )
DELETE FROM wp_comments WHERE comment_ID IN ( <comment ID:s selected in 2)> )
DELETE FROM wp_posts WHERE ID IN ( <post ID:s selected in 1)> )
是的,其中一些可以合并,但我希望尽可能简单。
表和列名取自我的WP 3.0-alpha。您可能需要检查Database description,以确保全部完成。