2011-11-30 32 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