워드프레스: 특정 카테고리의 모든 글 삭제 및 카테고리 글 개수 동기화

워드프레스 정보를 제공하는 블로그 Avada 2023. 10. 25. 00:07 • 댓글:

워드프레스에서 글 개수가 많지 않으면 관리자 페이지 내에서 쉽게 모든 글을 삭제할 수 있지만, 글 개수가 몇 천 개가 되는 경우 알림판에서 삭제하려면 상당한 시간이 걸립니다. 화면 옵션에서 한 페이지에 표시할 항목 개수를 최대 999개까지 설정할 수 있지만, 항목 개수를 높이면 관리자 페이지에서 작업할 때 시간이 많이 걸리거나 에러가 발생할 수 있습니다. 글 개수가 많을 경우 phpMyAdmin 등 MySQL 클라이언트에서 삭제하면 빠르고 효과적으로 삭제할 수 있습니다.

워드프레스: 특정 카테고리의 모든 글 삭제 및 카테고리 글 개수 동기화

많은 글이나 많은 댓글을 삭제하는 경우 화면 옵션에서 페이지당 항목 수를 최대 999개로 조정하여 삭제를 시도할 수 있습니다.

하지만 경험상 이 개수를 높이면 해당 페이지를 로드할 때 상당한 시간이 걸리고 삭제 등의 작업을 할 때에는 에러가 발생할 수도 있습니다. 처음에는 200개 정도로 높여보고 시스템이 벅벅 대지 않으면 숫자를 300개, 500개 등으로 점진적으로 높여볼 수 있습니다.

일전에 휴지통에 있는 10만 개가 넘는 글을 삭제하는 작업을 맡은 적이 있습니다.

글 개수가 너무 많아서 휴지통에서 휴지통 비우기를 시도하면 에러가 발생했습니다. Bulk Delete 같은 플러그인을 사용하여 대량 글 삭제가 가능합니다. 하지만 삭제할 글이 너무 많으면 이 플러그인을 사용할 경우 오류가 발생할 수도 있습니다.

최근에는 특정 카테고리의 모든 글을 삭제하는 작업을 맡은 적이 있습니다. 카테고리 내의 글 개수가 너무 많아서 마찬가지로 알림판에서 삭제하는 것이 쉽지 않았습니다. 

이런 경우 DB 관리자에 접속하여 다음과 같은 쿼리를 실행하어 쉽게 특정 카테고리의 모든 글을 삭제할 수 있습니다.

[경고*작업을 진행하기 전에 반드시 백업을 실시하시기 바랍니다. DB 작업은 되돌릴 수 없으며, 실행 후에는 백업본이 없는 경우 복구가 불가능하게 됩니다.*]

DELETE FROM wp_7_posts WHERE ID IN (
    SELECT object_id FROM wp_7_term_relationships WHERE term_taxonomy_id = 2
);

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
);

DB 테이블 프리픽스가 [**wp_7_**]으로 되어 있는데요. 실제 DB 테이블 프리픽스로 변경하시기 바랍니다(예: [**wp_**]). [**wp_7_**]인 이유는 멀티사이트 내의 사이트에서 글을 삭제하는 작업이었기 때문입니다.

또한, 카테고리 ID도 확인하여 수정하세요. 

위와 같이 하면 특정 카테고리 내의 모든 글이 삭제될 것입니다. 하지만 작업 후에 모든 글이 삭제되었지만 카테고리 글 개수가 0으로 바뀌지 않고 기존 숫자가 표시되었습니다. 이런 경우 다음과 같은 쿼리를 실행하여 카테고리 글 개수를 업데이트할 수 있습니다.

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';

phpMyAdmin 등 MySQL 관리자에서 다음과 같이 SQL 명령을 실행할 수 있습니다.

워드프레스: 특정 카테고리의 모든 글 삭제 및 카테고리 글 개수 동기화

클라우드웨이즈(Cloudways)의 경우 DB에서 작업할 경우 곧바로 반영되지 않고, 서버 캐시, 특히 Object Cache를 삭제해야 DB 작업 내용이 반영됩니다.

거듭 말씀드리지만 디비 작업은 위험하므로 작업 진행 전에 꼭 디비 백업을 하시기 바랍니다. UpdraftPlus와 같은 플러그인을 사용하여 백업하면 편리합니다. 하지만 멀티사이트의 경우 UpdraftPlus 유료 버전을 사용해야 백업이 가능합니다. 멀티사이트이면 phpMyAdmin 등에 접속하여 백업하시기 바랍니다.

참고

https://avada.tistory.com/2897

 

엘리멘터 무료 버전 vs. 프로 버전 비교

엘리멘터(Elmentor)는 500만 개가 넘는 사이트에 설치되어 사용되고 있는 인기 워드프레스 페이지 빌더 플러그인입니다. 엘리멘터는 무료 버전과 프로 버전으로 제공됩니다. Elementor 프로 버전에서

avada.tistory.com

https://avada.tistory.com/2335

 

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

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

avada.tistory.com

https://avada.tistory.com/3046

 

해외웹호스팅: 클라우드웨이즈 vs. 블루호스트 비교 (Cloudways vs. Bluehost)

저는 오랫동안 블루호스트(Bluehost)를 이용해 왔으며 2021년부터는 클라우드웨이즈(Cloudways) 웹호스팅 서비스도 함께 이용하고 있습니다. 현재 메인 워드프레스 블로그는 Bluehost에서 호스팅되고 있

avada.tistory.com