WordPress의 미디어 라이브러리에서 사용하지 않는 이미지를 제거하는 방법

게시 됨: 2019-10-15

웹사이트가 한동안 운영되다 보면 더 이상 필요하지 않지만 여전히 존재하는 것들이 있는 것이 정상입니다. 가장 성가신 예 중 하나는 더 이상 사용되지 않지만 WordPress에서 계속 공간을 차지하는 이미지입니다.

게시물이나 페이지에서 더 이상 사용하지 않거나 더 이상 사용되지 않는 다른 유형의 콘텐츠에서 이러한 이미지는 서버에서 계속 호스팅되어 리소스와 저장 공간을 낭비합니다. 그것들로 할 수 있는 가장 좋은 방법은 다시 사용하지 않을 경우 제거하는 것입니다. 그러나 어떻게 그들을 찾고 어디에도 사용되지 않는지 확인할 수 있습니까? 한번 볼까…

시작하기 전에

더 이상 사용하지 않는 이미지를 WordPress에서 삭제하려는 경우 가장 먼저 해야 할 일은 wp-content 폴더 내의 미디어 파일을 포함하여 웹사이트의 백업 복사본을 만드는 것입니다.

미디어 라이브러리에 업로드하는 이미지는 wp-content/uploads/ 내에 저장되지만 플러그인을 사용하여 파일을 업로드하면 다른 폴더에 저장될 수 있습니다. 따라서 WordPress 데이터베이스의 백업 사본과 wp-content/uploads wp-content 폴더 내의 모든 파일이 있는지 확인하십시오.

백업이 생성되면 다음 단계를 계속할 수 있습니다.

WordPress에서 분리된 이미지 감지

WordPress 웹사이트의 콘텐츠에서 더 이상 사용되지 않는 이미지를 감지하는 방법에는 여러 가지가 있습니다. 가장 효과적인 방법은 WordPress 데이터베이스에서 검색하는 것입니다.

이를 위해 우리는 WordPress 미디어 라이브러리에 업로드한 이미지가 마치 게시물이나 페이지인 것처럼 wp_posts 테이블에 저장된다는 것을 알아야 합니다. 이 테이블에 저장된 다른 내용과 구별되는 점은 post_type 열에 첨부 값이 있다는 것입니다.

그건 그렇고, 중요한 알림: 데이터베이스에 대한 지식이 없는 경우 지금부터 하는 일에 주의하고 데이터베이스를 백업하고 모든 내용을 설명하는 이 WordPress Codex 기사를 확인하는 것이 가장 좋습니다. 자세한 세부 사항.

우리는 어디에 있었나요? 오 예: WordPress에서 사용되지 않는 모든 이미지를 찾고 싶습니다. 이것은 하는 것보다 정의하기가 쉽지만 걱정하지 마십시오. 단계별로 간단한 방법으로 설명하려고 합니다.

WordPress MySQL 데이터베이스에서 실행할 쿼리를 SQL 언어로 작성하기만 하면 됩니다. 웹 사이트 데이터베이스에 액세스하는 방법을 모르는 경우 방법에 대한 지침은 호스팅 제공업체에 문의하십시오. 그들이 당신에게 phpMyAdmin에 대한 액세스 권한을 부여하면 괜찮습니다.

실행해야 하는 쿼리는 다음과 같습니다.

분해해 봅시다.

가장 먼저 하는 일은 SELECT 문으로 시작하여 특정 테이블의 모든 특정 행을 선택하는 것입니다. 2행에서 별표는 각 행에 "모든 열"이 필요하다는 것을 의미합니다.

3행과 4행은 우리가 관심을 갖고 있는 테이블을 나타냅니다. 이 경우, 내가 말했듯이 wp_posts 에 저장되어 있는 WordPress 첨부 파일을 선택하고 싶습니다. 그래서 그것이 우리가 사용할 테이블입니다.

5행부터 WHERE 문을 사용하여 원하는 행을 필터링하고 나머지는 제외하는 조건을 추가할 수 있습니다. 6행과 14행 사이의 각 조건은 모든 조건이 한 번에 충족되어야 함을 나타내는 AND 명령으로 구분됩니다. 행이 모든 WHERE 조건을 충족하지 않으면 SELECT 쿼리의 출력에 반환되지 않습니다.

6행의 첫 번째 조건은 post_type 열의 값이 attachment 인 행만 가져오도록 정의합니다. 전에 말했듯이 게시물과 페이지는 wp_posts 테이블에도 저장됩니다. 이 조건에서는 이미지만 얻을 수 있습니다.

첨부 파일 에 대해 WordPress는 post_parent 열을 사용하여 페이지 또는 게시물 컨텍스트 내에서 업로드되었는지 여부를 저장합니다. 따라서 8행의 조건은 post_parent 가 존재하지 않는(즉, 페이지나 게시물에 바인딩되지 않은) 첨부 파일 만 가져옵니다.

반면에 이미지를 게시물이나 페이지의 추천 이미지로 선택하면 WordPress는 wp_postmeta 키를 사용하여 _thumbnail_id 테이블에 메타데이터 행을 만들고 값으로 첨부 이미지의 식별자를 설정합니다. 쿼리의 10번째 줄에서 식별자가 _thumbnail_id 키에 대한 wp_postmeta 행의 값으로 나타나지 않는 이미지를 얻습니다.

12행은 게시물이나 페이지의 콘텐츠에 URL이 표시되지 않는 이미지를 필터링하는 조건을 정의합니다. 즉, 이미지의 URL이 콘텐츠 내에 나타나면 이미지가 여전히 유용하다고 가정하므로 삭제해서는 됩니다. 이미지의 URL은 wp_posts 테이블의 guid 열에 나타납니다.

마지막으로 이미지의 URL을 wp_postmeta 테이블의 행에 넣는 플러그인을 사용했을 수 있습니다. 14행의 조건을 통해 이 특정 경우를 감지할 수 있습니다.

그리고 그게 다야! 이 SQL 쿼리를 실행하면 사이트의 어느 곳에서도 사용되지 않는 것으로 의심되는 모든 이미지가 반환됩니다.

고아 이미지를 찾을 때 오탐지가 있을 수 있음을 명심하십시오. 즉, 사용하지 않는 것으로 플래그가 지정되었지만 실제로 WordPress에서 사용 중인 이미지입니다. 자체 테이블을 정의하고 거기에 이미지에 대한 참조를 보관하는 플러그인을 사용할 수 있기 때문입니다. 이 경우 이러한 경우를 처리하기 위해 추가 조건을 추가하여 쿼리를 조정해야 합니다.

WordPress에서 분리된 이미지 제거

WordPress에서 잠재적으로 사용되지 않는 이미지가 있으므로 결과를 살펴보고 나열된 모든 이미지가 사용되고 있는지 확인해야 합니다. 찾은 내용에 따라 이전에 말했듯이 더 많은 조건을 추가하여 쿼리를 구체화할 수 있습니다. 모든 것이 정확해 보이면 계속 진행할 수 있습니다.

WordPress에서 첨부 파일 을 삭제하기 위해 여기에 설명된 wp_delete_attachment 기능이 있습니다. 문서를 보면 이 함수가 첨부 파일 식별자와 삭제를 강제할 것인지 아니면 그냥 휴지통에 넣을 것인지를 나타내는 부울 매개변수를 가져오는 것을 볼 수 있습니다.

WordPress에서 이 기능을 호출하면 첨부 파일 과 가능한 주석, 분류의 모양, 관련 메타데이터 및 가장 중요한 것은 wp-content 폴더에 저장된 이미지 파일을 포함한 모든 관련 정보가 삭제됩니다.

PHP에서 사용할 wp_delete_attachment 명령어 목록을 얻으려면 SELECT 쿼리가 반환하는 것이 원하는 명령어를 구성하는 문자열이 되도록 이전 쿼리의 2행을 변경하면 됩니다. 쿼리에서 반환된 각 행에 대해 하나씩. 여기에서 결과를 볼 수 있습니다.

사용하지 않는 이미지를 감지하고 WordPress에서 삭제하는 PHP 코드를 가져오는 SQL 명령.
사용하지 않는 이미지를 감지하고 WordPress에서 삭제하는 PHP 코드를 가져오는 SQL 명령.

이제 이 모든 지침을 복사하여 테마의 functions.php 파일에 붙여넣고 웹사이트를 방문하기만 하면 됩니다. 이렇게 하면 이러한 지침이 실행되어 WordPress에서 분리된 이미지가 삭제됩니다. 그런 다음 더 이상 필요하지 않으므로 이전에 붙여넣은 지침을 제거합니다.

웹사이트가 여전히 완벽하게 작동하고 관련 이미지를 삭제하지 않았는지 확인하십시오. 문제가 발생하더라도 걱정하지 마십시오. 데이터베이스와 wp-content 폴더의 백업이 있어야 웹사이트를 이전 상태로 복원할 수 있습니다.

SQL 및 데이터베이스에 문제가 있거나 여기에서 설명한 내용을 전혀 이해하지 못한 경우 먼저 아래에 의견을 작성하여 알려주십시오. 그런 다음 Media Cleaner와 같은 플러그인을 사용해 보십시오. 최종 결과는 이 게시물에서 본 것과 매우 유사해야 합니다.

UnsplashGary Chan 추천한 이미지 .