Php Wordpress自动删除自定义元字段

Php Wordpress自动删除自定义元字段,php,wordpress,meta-tags,Php,Wordpress,Meta Tags,假设我有一个名为“首次登场”的自定义元字段,我想在x天之后(例如30天)将其从post/db中删除,但post仍然保持不变,只是没有“首次登场”的值。我该怎么做呢 我将创建一个简单的插件,该插件将钩住wordpress的加载状态,只需删除符合您标准的post meta即可 add_action('wp_loaded', 'cleanup_expired_meta'); function cleanup_expired_meta(){ global $wpdb; $wpdb-&g

假设我有一个名为“首次登场”的自定义元字段,我想在x天之后(例如30天)将其从post/db中删除,但post仍然保持不变,只是没有“首次登场”的值。我该怎么做呢

我将创建一个简单的插件,该插件将钩住wordpress的加载状态,只需删除符合您标准的post meta即可

add_action('wp_loaded', 'cleanup_expired_meta');

function cleanup_expired_meta(){
    global $wpdb;
    $wpdb->execute('DELETE FROM '.$wpdb->prefix.'posts_meta WHERE [conditions]');
}
没有测试,只是把它从我的头上拿下来,小心你用它做什么,可能会很危险并删除你所有的post meta…:)


这将是完整的请求,注意tho,添加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()
从'wp_posts'中删除
在wp_postmeta.post_id=wp_posts.id上左加入wp_postmeta
在releasedate.post\u id=wp\u posts.id和releasedate.meta\u key=“releasedate”
其中wp_postmeta.meta_key=“首次亮相”
和DATE_ADD(releasedate.meta_值,间隔30天)

注意,由于meta_值的数据类型是varchar,我不确定这是否有效,但如果转换有效,可能不会抛出错误。

感谢您的快速回复,我有两个后续问题。我如何设置“首次登场”标签在30天后过期,以及在您刚才提供的代码中插入“首次登场”标签的位置?我有另一个名为“发布日期”的自定义字段,可以用作参考日期,因此我将使用该字段而不是修改日期。使用“release date”值而不是modified date,我认为代码应该是这样的?{SELECT*FROM
wp_posts
LEFT JOIN wp_postmeta.post_id=wp_posts.id,其中wp_postmeta.meta_key=“首次登场”和date_ADD(wp_posts.post_relate-date,间隔30天)