2011-03-15 86 views
0

很长一段时间,我已经寻找一个插件,将删除在特定的“年龄”以上的职位(如30天)。做这个的最好方式是什么?WordPress的:自动删除x天的帖子?

+0

你想有这样的东西,里面WordPress的发生,否则你将与一个cronjob同样幸福? – 2011-03-15 20:29:48

+0

它的好......无论如何:-)或者说,我认为它应该是已经落实到WordPress的,我不明白为什么垃圾主题是不是真的被开发商认为。非常感谢 – dongio 2011-03-15 21:29:17

回答

5

下面是一些SQL会发现每一个已经存在了30天或更长时间后:

SELECT * FROM `wp_posts` 
WHERE `post_type` = 'post' 
AND DATEDIFF(NOW(), `post_date`) > 30 

要删除所有帖子,你可以替换SELECT * FROMDELETE FROM - 但一定要采取备份前你做这个!

然后,您可以只cron你喜欢的那个,是一个shell脚本,PHP脚本,或任何你最舒服。

+0

非常感谢,如何将这个插件整合到一天一次调用wp cron的插件中? – dongio 2011-03-15 22:00:50

+0

它可以完全存在于Wordpress之外,如果你想保持简单,只需编写一些PHP连接到你的数据库并运行查询。那里有很多很好的MySQL/PHP教程。 – 2011-03-15 22:03:01

+0

好吧,我考虑解决,再次感谢你。最好的问候 – dongio 2011-03-15 22:08:50

0

删除30天post命令是:

delete FROM `wp_posts` 
WHERE `post_type` = 'post' 
AND DATEDIFF(NOW(), `post_date`) > 30 
+0

您能否指定您的答案与@Sam答案的区别? – 2013-05-27 17:32:35

5
delete a,b,c,d 
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) 
LEFT JOIN wp_term_taxonomy d ON (d.term_taxonomy_id = b.term_taxonomy_id) 
LEFT JOIN wp_terms e ON (e.term_id = d.term_id) 
WHERE e.term_id =<category id> 
AND a.post_type = 'post' 
AND DATEDIFF(NOW(), a.post_date) > 30 

Reference