Wordpress автоматически удаляет пользовательское метаполе - PullRequest
0 голосов
/ 30 ноября 2011

Допустим, у меня есть собственное мета-поле, называемое «дебют», и я хочу, чтобы через x дней (например, 30 дней) оно было удалено из записи / базы данных, но пост все равно остается без изменений, только без значения«дебют».Как бы я поступил так?

1 Ответ

0 голосов
/ 30 ноября 2011

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

...