운영하는 사이트에서 특정 카테고리의 글을 제외하고 모든 글을 삭제하고 싶은 경우가 있을 수 있습니다. 대량으로 글을 삭제하려는 경우 이 글에서 소개하는 Bulk Delete라는 플러그인을 사용할 수 있습니다. 하지만 글 개수가 너무 많거나 멀티사이트 등의 이유로 플러그인을 사용할 수 없는 경우 DB에서 직접 글을 삭제하는 것이 가능합니다.
워드프레스: 특정 카테고리의 글을 제외한 모든 글을 삭제하는 방법
게시글을 대량적으로 삭제하기 전에 반드시 사이트를 백업하시기 바랍니다. 백업을 하지 않으면 삭제 후에 잘못될 경우 복구가 불가능해질 수도 있습니다.
phpMyAdmin 등 데이터베이스에 접속하여 직접 콘텐츠를 삭제할 수 있습니다.
특정 카테고리에 속한 글을 제외한 모든 포스트를 삭제하려는 경우 다음과 같은 SQL 쿼리를 실행할 수 있습니다.
DELETE wp_7_posts FROM wp_7_posts
LEFT JOIN wp_7_term_relationships ON wp_7_posts.ID = wp_7_term_relationships.object_id
AND wp_7_term_relationships.term_taxonomy_id = 10
WHERE wp_7_term_relationships.object_id IS NULL;
DELETE FROM wp_7_term_relationships WHERE object_id NOT IN (
SELECT ID FROM wp_7_posts
);
DELETE FROM wp_7_postmeta WHERE post_id NOT IN (
SELECT ID FROM wp_7_posts
);
상기의 방법을 이용할 경우 페이지도 모두 삭제되는 것 같습니다. 다음과 같이 포스트 타입을 지정해 주면 페이지는 유지될 것입니다.
DELETE wp_7_posts FROM wp_7_posts
LEFT JOIN wp_7_term_relationships ON wp_7_posts.ID = wp_7_term_relationships.object_id
AND wp_7_term_relationships.term_taxonomy_id = 10
WHERE wp_7_term_relationships.object_id IS NULL
AND wp_7_posts.post_type = 'post';
DELETE FROM wp_7_term_relationships WHERE object_id NOT IN (
SELECT ID FROM wp_7_posts WHERE post_type = 'post'
);
DELETE FROM wp_7_postmeta WHERE post_id NOT IN (
SELECT ID FROM wp_7_posts WHERE post_type = 'post'
);
클라우드웨이즈(Cloudways)를 이용하는 경우 Database Manager에 접속하여 SQL 명령 섹션에서 위의 쿼리를 실행할 수 있습니다.
카페24를 이용하는 경우 phpMyAdmin을 삭제하여 DB에 접속할 수 있습니다.
위의 명령을 실행하면 특정 카테고리의 글을 제외한 모든 글이 삭제됩니다. 하지만 카테고리 글 개수는 갱신되지 않습니다.
다음과 같은 SQL 쿼리를 실행하면 카테고리 글 개수가 동기화됩니다.
UPDATE wp_7_term_taxonomy tt
SET count = (
SELECT COUNT(tr.object_id)
FROM wp_7_term_relationships tr
WHERE tr.term_taxonomy_id = tt.term_taxonomy_id
)
WHERE tt.taxonomy = 'category';
이제 새로 고침하면 카테고리 글 개수가 업데이트된 것을 확인할 수 있을 것입니다.
이제 모든 카테고리를 삭제할 수 있습니다. 위의 그림에서는 블로그 카테고리 글을 제외한 모든 카테고리가 삭제되었습니다.
카테고리 글 개수가 갱신되지 않으면, 클라우드웨이즈를 이용하는 경우 Breeze 캐시 플러그인의 캐시를 모두 삭제한 후에 체크해 보세요.
[경고*DB 작업은 실행 후에 되돌릴 수 없습니다. 반드시 DB를 백업한 후에 위의 방법을 시도해 보세요.*]
상기의 방법으로 글을 삭제한 후에 에러가 발생하면 백업본을 사용하여 되돌리시기 바랍니다.
참고
https://avada.tistory.com/2809
https://avada.tistory.com/2335