Я бы создал простой плагин, который подключается к загруженному состоянию 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, но если преобразование сработает, возможно, оно не выдаст ошибки.