워드프레스 대량 글 삭제 / 임시글로 바꾸기

Last Updated: 2020년 10월 28일 | | 2개 댓글

워드프레스에서 글을 일괄 삭제해야 하거나 모든 글을 임시글로 바꾸고 싶은 경우가 있습니다. 조건에 따라 글이나 페이지 등을 삭제하려는 경우에는 Bulk Delete와 같은 대량 글 삭제 플러그인을 사용할 수 있습니다.

워드프레스 대량 글 삭제하기 / 임시글로 바꾸기

워드프레스 대량 글 삭제하기

수동으로 대량 글 삭제하기

워드프레스 사이트를 제작한 후 3년 이상 워드프레스와 테마, 플러그인을 업데이트하지 않아 악성 코드에 감염된 사이트를 치료하는 작업을 수행했습니다. 워드프레스와 테마, 플러그인을 적시에 업데이트를 하지 않을 경우 멀웨어에 감염되거나 해킹 당할 위험이 있습니다.

Bridge 테마로 제작된 사이트였는데, 사이트를 살펴보니 이상한 관리자 계정이 추가되어 있었고, 9000개가 넘는 스팸 글이 발행되어 있었습니다.

수동으로 워드프레스 대량 글 삭제하기

이런 상황에서는 문제가 되는 사용자 계정을 삭제하면서 해당 계정으로 작성된 모든 콘텐츠를 함께 삭제할 수 있습니다.

워드프레스 사용자 삭제

그러나 글이 너무 많아서 계정 삭제를 시도하니 사이트가 먹통이 되는 현상이 발생했습니다. 아마 웹호스팅의 memory_limit와 max_execution_time 등의 값이 낮아서 문제가 발생하는 것으로 생각되었습니다. 하지만 PHP 설정값을 높여도 문제가 해결되지 않았습니다.

9,000개나 되는 스팸 글을 일일이 삭제하려면 시간이 제법 소요될 것입니다. 수동으로 글을 삭제해야 하는 경우에는 글 > 모든 글 페이지에서 오른쪽 상단의 화면 옵션을 클릭한 다음 '페이지당 아이템 개수'를 높이면 한 페이지에 표시되는 포스트 개수를 늘릴 수 있습니다.

워드프레스 글 표시 개수 변경

기본적으로 20개 항목이 한 화면에 표시되도록 설정되어 있습니다. 이 값을 최대 999까지 높일 수 있습니다. 그러나 999까지 높이면 페이지 속도가 매우 느려지거나 웹호스팅이 안 좋은 경우 오류가 발생할 수 있습니다.

글 개수 설정을 처음에는 100개 정도로 설정해보고, 페이지를 로드하는 데 이상이 없으면 200개, 300개로 점차 높이면서 테스트해보면 좋을 듯합니다. 200개로 설정해도 200개 글을 한 화면에서 전체 선택하여 삭제할 수 있으므로 20개에 비해 삭제 작업이 상당히 단축될 것입니다.

Bulk Delete 플러그인을 사용하여 조건에 따라 대량 글 삭제하기

워드프레스 대량 삭제 플러그인

Bulk Delete를 사용하면 다양한 조건과 필터를 기준으로 글, 페이지, 첨부, 사용자 및 메타 필드를 삭제할 수 있습니다.

이 워드프레스 플러그인은 다음과 같은 포스트 삭제 옵션을 제공합니다.

  • 카테고리별 글 삭제
  • 태그별 글 삭제
  • 사용자 정의 분류 기준으로 글 삭제
  • 커스텀 포스트 타입 기준으로 글 삭제
  • 댓글 개수를 기준으로 글 삭제
  • URL 기준으로 글 삭제
  • 사용자 정의 필드 기준으로 글 삭제 (Pro 애드온에서 제공)
  • 제목 기준으로 포스트 삭제 (Pro 애드온)
  • 중복 제목 기준으로 글 삭제 (Pro 애드온)
  • 모든 임시글 삭제
  • 모든 보류 중 글 삭제
  • 모든 비공개 글 삭제
  • 모든 예약 글 삭제
  • 휴지통의 모든 글 삭제 (Pro 애드온)

상기의 모든 옵션은 다음 필터를 지원합니다.

  • X일 이상의 포스트 날짜
  • X일 미만의 포스트 날짜
  • 발행된 글만
  • 비공개 글만
  • 첫 N개 포스트로 제한
  • 영구 삭제 또는 휴지통으로 이동
  • 자동으로 포스트 삭제 예약 (Pro 애드온)

콘텐츠 기준으로 글 삭제

  • 콘텐츠 기준으로 글 삭제 (Pro 애드온)
  • 제목 기준으로 중복 글 삭제 (Pro 애드온)
  • 첨부 파일(미디어)이 포함되었는지를 기준으로 글 삭제 (Pro 애드온)

사용자 기준으로 글 삭제

  • 사용자 역할별 포스트 삭제 (Pro 애드온)
  • 사용자별 포스트 삭제 (Pro 애드온)

페이지 삭제

  • 모든 발행된 페이지 삭제
  • 모든 임시 페이지 삭제
  • 모든 보류 중 페이지 삭제
  • 모든 비공개 페이지 삭제
  • 모든 예약 페이지 삭제
  • 휴지통의 모든 페이지 삭제 (Pro 애드온)

포스트 리비전 삭제

  • 모든 포스트 리비전 삭제

사용자 삭제

  • 사용자 역할 (User Role) 기준으로 사용자 삭제
  • 사용자 메타 필드 기준으로 사용자 삭제
  • 최근 X일 이내에 로그인하지 않은 사용자 삭제
  • 회원 가입일 기준으로 사용자 삭제

메타 필드(meta fields) 삭제

  • 포스트 메타 필드 삭제
  • 댓글 메타 필드 삭제
  • 사용자 메타 필드 삭제

이외에도 Delete Jetpack Contact Form 메시지도 삭제가 가능하다고 합니다.

모든 글의 상태를 임시글로 전환하기

예를 들어, 사이트를 리뉴얼하면서 이전 포스트를 임시글(draft) 상태로 전환하여 유지하기를 원할 수도 있습니다. 이 경우 phpMyAdmin에 접속하여 다음과 같은 쿼리를 실행할 수 있습니다.

update wp_posts set post_status = replace(post_status, 'publish', 'draft');
update wp_posts set post_status = replace(post_status, 'inherit', 'draft');

wp_posts는 실제 사용 중인 워드프레스 테이블 프리픽스(Prefix)에 맞게 변경하시기 바랍니다. 기본 테이블 프리픽스는 wp_이지만 워드프레스 설치 시에 다른 접두사로 설정될 수 있습니다. 예: phb3_posts

블루호스트 (Bluehost)를 사용하는 경우 "해외호스팅 블루호스트에서 phpMyAdmin에 접속하는 방법"을 참고하여 데이터베이스(DB)에 접근할 수 있습니다. cPanel을 사용하는 호스팅을 이용하고 있다면 비슷한 방법으로 phpMyAdmin에 접속할 수 있습니다. 가비아의 경우 가비아에 로그인하여 phpMyAdmin 툴에 접근할 수 있습니다. 카페24를 사용한다면 phpMyAdmin을 설치해야 합니다.

phpMyAdmin에 로그인한 후에 SQL 탭에 위의 코드를 복사하여 붙여넣기 한 후에 실행(Go 버튼 또는 실행 버튼)하면 됩니다.

phpMyAdmin에서 모든 글의 상태를 임시글로 바꾸기

DB 작업은 위험하므로 반드시 DB 백업을 한 후에 위의 코드를 실행하시기 바랍니다. 잘못될 경우 백업본이 없으면 되돌릴 수 없습니다.

참고


2 개 댓글

Leave a Comment