Wordpress自动删除自定义元字段


Wordpress auto delete a custom meta field

假设我有一个名为"debut"的自定义元字段,我想在x天(Ex 30天)之后从post/db中删除它,但post仍然保持完整,只是没有"debut"的值。我该怎么做呢?

我会创建一个简单的插件,挂钩到wordpress的加载状态,只需删除贴子元符合你的标准…

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

没有测试,只是得到了我的头,小心你用它做什么,可能是危险的,删除你所有的帖子元…:)


这将是完整的请求,但请注意,没有添加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,但如果转换工作,也许它不会抛出错误。