首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要MySQL查询才能删除WordPress帖子和超过X天的帖子

需要MySQL查询才能删除WordPress帖子和超过X天的帖子
EN

Stack Overflow用户
提问于 2010-01-29 06:25:08
回答 1查看 6.1K关注 0票数 0

我开了一个博客,社区可以发布时间敏感的社区链接(体育比分等等)。

过了一段时间,这些帖子就不再有用了,所以我想通过MySQL查询批量删除它们,但我不知道怎么做。我想,完全删除这些帖子不仅仅是从the wp_posts表中删除,对吧?每个帖子都有其他的工作台,不是吗?

我试过几个auto-batch-delete插件,但它们一半的时间都不起作用。

请您提供一个MySQL查询,以便从所有相关表中删除超过X天的帖子和文章?

EN

回答 1

Stack Overflow用户

发布于 2010-01-29 06:40:39

如果不是删除帖子,而只是将它们标记为垃圾或草稿呢?您将获得相同的最终结果,但不要冒着损坏数据库的风险。

当然,从长远来看,它会使您的数据库变得非常大,但对我来说,这似乎是一种更简单、更安全的方法。作为一个额外的好处,信息也不会丢失。

编辑。

另一种方法是将帖子移到一个单独的类别中,但如果你想做像拆迁人一样的事情,也没问题:-)

代码语言:javascript
复制
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,以确保您获得了所有内容。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2158465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档