Удалить посты без категорий
Посты без категорий выбрать сложно. Хотя на сайте они отображаются как члены дефолтной категории, на самом деле у них нет категории, и при выборе постов дефолтной категории они не возвращаются.
Поэтому, чтобы запросить записи без категории, нам необходимо прибегнуть к небольшой хитрости:
1 2 3 |
'category__not_in' => get_terms('category', [ 'fields' => 'ids' ]), |
Полностью код, который выбирает все посты без категорий и удаляет их будет выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
global $post; $query = new WP_Query([ 'post_type' => 'post', 'category__not_in' => get_terms('category', [ 'fields' => 'ids' ]), 'posts_per_page' => -1, ]); $cnt = 0; while ($query->have_posts()) { $cnt++; $query->the_post(); echo $cnt." ".$post->post_title.PHP_EOL; wp_delete_post($post->ID, true); } |
Предполагается, что этот код выполняется внутри вордпресса. Если хочется запустить его в рамках стороннего скрипта, нужно сделать что-то вроде:
1 |
require_once 'wp-load.php'; |
Таким образом ваш скрипт окажется в рамках вордпресса, и тут можно делать всё, что вам хочется. Например, получать и удалять посты.
Обсуждение