Я пытаюсь удалить пост WordPress после X дней.
И я использую этот код.
$daystogo = 30;
$sql =
"UPDATE {$wpdb->posts}
SET post_status = 'trash'
WHERE (post_type = 'post' AND post_status = 'publish')
AND DATEDIFF(NOW(), post_date) > %d";
$wpdb->query($wpdb->prepare( $sql, $daystogo ));
Но я хочу исключить какой-нибудь пост по мета-ключу.
Как я не хочу, чтобы удалить этот пост, который имеет FEATURD POST VALUE IS 1
'meta_query' => array(
array(
'key' => 'featured_post',
'value' => '1',
'compare' => '=='
)
),
Любой способ добавить это условие в запросе?
Спасибо
Вот код mysql для вас, вы можете использовать функцию «IN ()» MySQL для этого:
$sql =
"UPDATE {$wpdb->posts}
SET post_status = 'trash'
WHERE (post_type = 'post' AND post_status = 'publish')
AND ID not in (select post_id from {$wpdb->postmeta} where
meta_key='featured_post' and meta_value='1' )
AND DATEDIFF(NOW(), post_date) > %d";
Других решений пока нет …