Обновить статус сообщения от "publish" до "trash" для половины сообщений

Я хочу обновить половину всех сообщений со статусом, published в trashed .

Пример:

  • если у меня 10000 сообщений, 5000 сообщений в корзину
  • Если у меня 6000 сообщений, 3000 сообщений для мусора
  • Если у меня 7000 сообщений, 3500 сообщений для мусора

Предполагая, что вы хотите удалить по дате, вот базовая концепция. Вам нужно будет выяснить, когда вы хотите, чтобы это запустилось, иначе, как я уже говорил выше, вы получите только 1 сообщение, если оно будет выполняться повторно.

Изменить: включение параметра для обеспечения безопасности

 <?php function doomsday_device($herd_thinning) { if(empty($herd_thinning)) { return; } $args = array( 'post_type' => 'post', 'post_status' => 'publish', 'orderby' => 'date', 'order' => 'ASC', 'posts_per_page' => -1 ); $loop = new WP_Query($args); if($herd_thinning > $loop->post_count) { return; } $kill_num = $loop->post_count / 2; $i = 0; while($loop->have_posts()) : $loop->the_post(); if($i >= $kill_num) { break; } wp_trash_post($post->ID); $i++ endwhile; } ?> 

Необходимо подчеркнуть, что это очень опасная функция. Если вы попытаетесь создать резервную копию своей базы данных. И вам нужно передать ему целое число, которое представляет собой общий размер столбца, который слишком велик для вашей симпатии, что позволит разрешить прореживание.