워드프레스: 특정 카테고리의 글을 제외한 모든 글을 삭제하는 방법

워드프레스 정보를 제공하는 블로그 Avada 2024. 3. 19. 00:01 • 댓글:

운영하는 사이트에서 특정 카테고리의 글을 제외하고 모든 글을 삭제하고 싶은 경우가 있을 수 있습니다. 대량으로 글을 삭제하려는 경우 이 글에서 소개하는 Bulk Delete라는 플러그인을 사용할 수 있습니다. 하지만 글 개수가 너무 많거나 멀티사이트 등의 이유로 플러그인을 사용할 수 없는 경우 DB에서 직접 글을 삭제하는 것이 가능합니다.

워드프레스: 특정 카테고리의 글을 제외한 모든 글을 삭제하는 방법

게시글을 대량적으로 삭제하기 전에 반드시 사이트를 백업하시기 바랍니다. 백업을 하지 않으면 삭제 후에 잘못될 경우 복구가 불가능해질 수도 있습니다.

 

DB와 데이터를 모두 백업하는 백업/복원 플러그인 - UpdraftPlus WordPress Backup

웹사이트를 운영할 경우 백업은 매우 중요합니다. 워드프레스에서도 정기적으로 백업을 받아놓으면 예상치 못한 상황에 대처할 수 있습니다

www.thewordcracker.com

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

 

클라우드웨이즈 DB 접속 방법

클라우드웨이즈(Cloudways)를 사용하면 아마존 AWS, Vultr, DigitalOcean 등의 서버를 비교적 수월하게 관리할 수 있습니다. 클라우드웨이즈에서는 관리 패널에서 DB에 접속할 수 있는 옵션을 제공합니다.

avada.tistory.com

https://avada.tistory.com/2335

 

워드프레스 GeneratePress 테마 라이선스 (+요금제)

워드프레스에는 정말 많은 테마가 있습니다. 테마 라이선스는 테마마다 조금씩 다릅니다. 아바다, 엔폴드, 뉴스페이퍼 등 테마포레스트 테마의 경우 동일한 라이선스가 적용됩니다(참고). Generat

avada.tistory.com