以下のコードをテーマのfunctions.phpに書いて管理画面にアクセスするとプラグインと同じような処理をしますがposts_per_page
に件数を指定すればそれ以上は処理しないので、何度かブラウザをリロードすればいずれは終わるでしょう。
function my_delete_post() {
$args = array(
'posts_per_page' => -1, // -1で全記事 1000件毎程度ならいけるかも?
'category' => array( '-1', '-2' ,'-3' ), // "削除したくない"記事のカテゴリーを-を付けて指定
'post_type' => 'post',
'post_status' => 'publish'
);
$post_ids = wp_list_pluck( get_posts( $args ), 'ID' );
foreach ( $post_ids as $post_id ) {
wp_delete_post( $post_id, true );
}
}
add_action( 'admin_init', 'my_delete_post' );
または削除したい記事のカテゴリーIDをterm_id =
に指定すれば即消えます。データベースを直接叩くので一番確実かと。
function my_delete_post() {
global $wpdb;
$wpdb->get_results( "
delete a,b,c,d
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id )
LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN wp_term_taxonomy d ON ( d.term_taxonomy_id = b.term_taxonomy_id )
LEFT JOIN wp_terms e ON ( e.term_id = d.term_id )
WHERE e.term_id =2 or e.term_id =3 or e.term_id =4
" );
}
add_action( 'admin_init', 'my_delete_post' );
参考
https://wpguru.co.uk/2013/02/how-to-bulk-delete-posts-in-wordpress-with-mysql/
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/26 04:58