2011-03-15 32 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