2011-11-30 76 views
0

可以說我有一個自定義元字段稱爲「首次亮相」,我希望x天后數天(例如30天)它是從後/數據庫中刪除,但帖子仍然是保持完整,沒有「首次亮相」的價值。我會怎麼做呢?WordPress的自動刪除自定義元字段

回答

0

我想創建一個簡單的插件,掛鉤的WordPress的負載狀態,只是刪除該帖元,滿足您的審覈規定...

add_action('wp_loaded', 'cleanup_expired_meta'); 

function cleanup_expired_meta(){ 
    global $wpdb; 
    $wpdb->execute('DELETE FROM '.$wpdb->prefix.'posts_meta WHERE [conditions]'); 
} 

沒有測試,就得到了我的頭頂部,becareful你與該做的事,可能是危險的,並刪除所有帖子METAS ... :)


這將是完整的請求,記壽,有沒有當加入一個META日期。所以我正在採取帖子的最後修改日期。但是,如果用戶修改了帖子,那麼在另外30天之前,元不會被刪除。

DELETE FROM `wp_posts` 
LEFT JOIN wp_postmeta ON wp_postmeta.post_id = wp_posts.id 
LEFT JOIN wp_postmeta AS releasedate ON releasedate.post_id = wp_posts.id AND releasedate.meta_key = "release-date" 
WHERE wp_postmeta.meta_key = "Debut" 
AND DATE_ADD(releasedate.meta_value, INTERVAL 30 DAY) < NOW() 

注意,我不知道這會工作,因爲meta_value的數據類型爲VARCHAR,但如果轉換工作,也許它不會甩開錯誤。

+0

謝謝您的快速響應,我有2個後續問題。我如何將30天后的「debut」標籤設置爲過期,以及我在哪裏可以在剛剛提供的代碼中插入「debut」標籤? – Craig

+0

我有另一個名爲「發佈日期」的自定義字段,我可以使用它作爲參考日期,因此我將使用該日期而不是修改日期。使用「發佈日期」值而不是修改日期我想代碼看起來像這樣? – Craig

+0

{SELECT * FROM 'wp_posts' LEFT JOIN wp_postmeta ON wp_postmeta.post_id = wp_posts.id WHERE wp_postmeta.meta_key = 「出道」 AND DATE_ADD(wp_posts.post_releat-日期,INTERVAL 30 DAY) Craig