phpMyAdmin에서 오래된 워드프레스 글 일괄 삭제하기

일정 기간이 지난 오래된 글들을 삭제하고 싶은 경우가 있습니다. 그런 경우 워드프레스에서는 일괄 작업 기능을 사용하여 삭제하거나 Bulk Delete와 같은 플러그인을 사용할 수 있습니다. 일괄 작업이나 플러그인을 사용한 삭제가 용이하지 않은 경우 phpMyAdmin에서 오래된 워드프레스 글을 일괄 삭제하는 것도 가능합니다.

phpMyAdmin에서 오래된 워드프레스 글 일괄 삭제하기

phpMyAdmin에서 오래된 워드프레스 글 일괄 삭제하기

얼마 전에 약 2년 이상이 지난 오래된 글들을 삭제해야 하는 상황이 발생했습니다. 삭제할 글 개수가 2,000개가 넘었는데, 일괄 작업 방법으로 삭제하기에 시간이 너무 걸리고, 중도에 에러가 발생했습니다.

그래서 Bulk Delete라는 플러그인을 가지고 시도해보았습니다. 하지만 이 플러그인은 멀티사이트에서 작동하지 않았습니다. 멀티사이트에서 이 플러그인을 실행하여 삭제를 시도하자 마자 Fatal error 오류 문구가 표시되면서 사이트가 먹통이 되었습니다.

방법을 강구하다가 phpMyAdmin에서 간단한 쿼리로 오래된 글들을 삭제하는 방법이 있다는 것을 알게 되었습니다.

저는 Stackoverflow의 "WordPress: automatically delete posts that are x days old?"(워드프레스에서 x일 이상 된 글들을 자동으로 삭제하기) 문서를 참고하여 오래된 글들을 phpMyAdmin에서 삭제했습니다.

또한, "Delete posts older than 2 years in wordpress site"(워드프레스 사이트에서 2년 이상 된 글 삭제하기)에서 제시하는 방법도 사용할 수 있습니다.

DELETE FROM `wp_posts`
WHERE `post_type` = 'post'
AND DATEDIFF(NOW(), `post_date`) > 625

특정 기간 사이의 일수 계산은 일수 계산 사이트를 이용하여 쉽게 일수를 계산할 수 있습니다(예: 2020년 1월 1일부터 현재까지의 일 수).

위와 같은 쿼리를 실행하면 625일이 지난 모든 글들이 자동으로 삭제됩니다. 다만, 경계 지점에 있는 글들이 예상치 않게 삭제될 수 있으므로 실제 일수보다 1일을 더해서 테스트해보는 것이 안전할 수 있습니다. (가령, 625일이 지난 모든 글을 삭제하기 위해 위와 같은 쿼리를 실행하면 624일이 지난 글들도 예상치 않게 삭제될 수 있습니다.)

phpMyAdmin을 통해 오래된 워드프레스 글 일괄 삭제하기

phpMyAdmin에 접속하는 방법을 모르는 경우에는 서버 관리자나 웹호스팅 담당자에게 문의하여 안내를 받으시기 바랍니다. 블루호스트 등 cPanel 환경을 제공하는 호스팅에서는 cPanel에서 phpMyAdmin에 로그인할 수 있습니다.

먼저는 DB를 반드시 백업한 후에 위의 쿼리를 실행하시기 바랍니다. DB 작업은 되돌릴 수 없기 때문에 항상 신중해야 하고 백업이 필수입니다.

하지만 위의 방법으로 글들을 일괄 삭제하면 연결이 끊어진 포스트메타(orphaned postmeta) 항목들이 생기게 되고 Transient 항목들도 늘어날 수 있습니다. "orphaned"는 "고아가 된"이라는 뜻으로 부모 항목(글)이 삭제되면서 갈 곳을 잃은 포스트메타들을 일컫는 표현으로 이해하면 될 것 같습니다.

그러면 WP-OptimizeWP-Sweep과 같은 최적화 플러그인을 사용하여 고아가 된 항목들과 Transient 항목들을 정리할 수 있습니다("데이터베이스 최적화로 워드프레스 사이트 성능 향상시키기" 참고). 저는 Transient 항목이 9,000개가 넘어서 최적화 플러그인을 사용하여 정리하는 데 약간 시간이 걸렸습니다. 마찬가지로 최적화 플러그인을 실행하기 전에 DB를 확실히 백업하시기 바랍니다.

마치며

이상으로 phpMyAdmin을 통해 오래 된 글을 삭제하는 방법에 대하여 살펴보았습니다. 삭제할 글 개수가 그리 많지 않다면 "워드프레스 대량 글 삭제 / 임시글로 바꾸기"에서 제시하는 방법으로 글들을 일괄 삭제할 수 있지만, 어떤 이유로 오류가 발생하거나 시간이 많이 소요되는 경우에는 위의 방법을 고려해볼 수 있습니다.

참고


댓글 남기기

* 이메일 주소는 공개되지 않습니다.