我开了一个博客,社区可以发布时间敏感的社区链接(体育比分等等)。
过了一段时间,这些帖子就不再有用了,所以我想通过MySQL查询批量删除它们,但我不知道怎么做。我想,完全删除这些帖子不仅仅是从the wp_posts表中删除,对吧?每个帖子都有其他的工作台,不是吗?
我试过几个auto-或batch-delete插件,但它们一半的时间都不起作用。
请您提供一个MySQL查询,以便从所有相关表中删除超过X天的帖子和文章?
发布于 2010-01-29 06:40:39
如果不是删除帖子,而只是将它们标记为垃圾或草稿呢?您将获得相同的最终结果,但不要冒着损坏数据库的风险。
当然,从长远来看,它会使您的数据库变得非常大,但对我来说,这似乎是一种更简单、更安全的方法。作为一个额外的好处,信息也不会丢失。
编辑。
另一种方法是将帖子移到一个单独的类别中,但如果你想做像拆迁人一样的事情,也没问题:-)
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)> )是的,其中一些可以组合在一起,但我喜欢让事情尽可能简单。
表和列名取自我的WP3.0-alpha。您可能想要检查Database description,以确保您获得了所有内容。
https://stackoverflow.com/questions/2158465
复制相似问题