워드프레스 미디어 업로드 폴더 변경

워드프레스 사용 중 이미지, 압축 파일, 문서 파일 등의 미디어 저장 경로와 폴더를 변경할 경우에 다음 코드를 wp-config.php 파일에 추가하면 이후부터 업로드하는 미디어 파일은 변경한 위치에 저장됩니다.

// 워드프레스 기본 콘텐츠 경로에 업로드 폴더명만 변경
define( 'UPLOADS', 'wp-content/newuploads' );

기본은 wp-content/uploads 경로와 폴더라는 것은 워드프레스 사용자 대부분 아는 것이며, 다음처럼 wp-content 폴더가 아닌 워드프레스 설치 루트 경로로 설정해도 문제가 없습니다.

// 워드프레스 기본 콘텐츠 경로가 아닌 루트 경로에 폴더명과 함께 변경
define( 'UPLOADS', 'newuploads' );

주의할 사항은 경로 시작과 끝에 / 기호를 붙이지 않는 것입니다.

옵션 필드 데이터로 저장

미디어 경로 변경 정보는 wp-config.php 파일만이 아니라 워드프레스 옵션 필드에 저장할 수 있습니다. wp-config.php 파일에 설정할 때와 결과는 같습니다. 두 방법의 하나만 선택하면 됩니다.

함수로 직접 옵션 필드에 데이터 저장하기

업로드 폴더 정보는 데이터베이스 옵션 테이블 upload_path 필드에 저장할 수 있습니다. 옵션 데이터 저장 및 업데이트는 워드프레스에서 처리하기 쉬운 요소로 템플릿 파일, 보통 functions.php 파일에 다음 코드만 추가하고 사이트를 한 번 새로 고치면 됩니다.

// {prefix}_options 테이블 upload_path 필드
update_option( 'upload_path', 'newuploads' );

관리페이지 메뉴에 없는 사이트 전체 옵션 데이터 설정 페이지

업로드 폴더 정보는 관리페이지 설정 페이지에서 직접 설정할 수 없습니다. 그러나, 다음 주소로 접근하면 데이터베이스 옵션 테이블의 옵션 필드를 모두 볼 수 있고, 일부는 데이터를 직접 수정할 수 있습니다.

your-domain/wp-admin/options.php

이 주소로 접근하여 Ctrl + F 검색으로 ‘upload’ 키워드 검색하면 다음 그림처럼 upload_path 필드를 쉽게 찾을 수 있습니다. 그림처럼 newuploads를 입력하고 저장하면 됩니다.

워드프레스 전체 옵션 페이지

그림의 upload_url_path 필드는 upload_path를 포함한 미디어 URL 전체를 입력하는 것인데, 미디어 파일이 저장되는 URL이 같다면 입력하지 않아도 됩니다.

미디어 설정 페이지 화면의 변경

옵션 필드에 업로드 폴더를 데이터로 저장하면 관리페이지 미디어 설정 페이지에 다음 그림처럼 2개의 필드가 추가로 나옵니다. wp-config.php 파일에 설정할 때는 나오지 않는다는 것 기억하세요.

미디어 설정 페이지에 추가된 필드

미디어 설정 페이지에 2개의 필드가 나오면, 이후에는 이 페이지의 필드에서 데이터를 처리하면 됩니다. 전체 옵션 필드 페이지나 함수로 직접 옵션 데이터를 업데이트할 필요가 없습니다.

Full URL path to files (파일을 위한 전체 URL경로) 필드는 미디어 파일이 저장되는 URL이 다를 때 사용하면 좋지만, 드문 경우이므로 그냥 비워두는 게 좋습니다.

만약 그럴 때가 있다면, 반대로 upload_path 필드를 비워두고 전체 URL 입력 필드에 폴더를 포함한 전체 경로를 등록하면 됩니다. 이때는 워드프레스 기본 미디어 업로드 폴더에 미디어를 업로드하지만, 사용하기 위해서는 별도 작업이 필요합니다. 이 포스트에서는 다루지 않습니다.

미디어 업로드 경로 변경 후 이전 미디어

먼저, 미디어 경로와 폴더를 변경했을 때 사용하는 웹호스팅 환경에 따라 새로운 미디어 폴더가 자동으로 생성될 수 있으며, 자동 생성되지 않는다면 미디어 파일을 올릴 때 폴더가 함께 생성된다는 것 알고 있으면 됩니다.

미디어 업로드 경로를 변경하기는 너무 쉽고 간단하며, 미디어를 워드프레스 사이트에 올린 때가 없었다면 변경 후 다른 작업은 필요하지 않습니다. 반대라면 기존의 미디어 URL 정보를 변경하거나 다른 방법을 사용해야 사이트에 미디어가 나옵니다. 물론, 모든 경우는 아니며 워드프레스 기본 사용 방식으로 운용했을 때의 기준입니다.

관리페이지의 미디어 목록과 편집 화면에서는 옵션 필드의 미디어 경로 정보를 참조하는 동적 환경이므로 문제가 없습니다. 문제는 포스트 작성 시 이미지 등의 미디어를 포스트에 삽입한 때입니다. 워드프레스는 포스트에 미디어를 추가하면, 전체 URL을 포함한 Html 소스를 생성하므로 미디어 경로 변경 전 포스트에 삽입한 이미지 등의 미디어는 사이트에 나오지 않습니다.

그런데, 미디어 경로를 변경하면 새로운 폴더에 미디어가 저장되며, 기존 미디어 경로의 폴더에는 기존 미디어가 그대로 존재하는데도 사이트에 나오지 않는 때가 있습니다. 또, 미디어의 실제 URL로 브라우저에서 확인하면 나오는데, 포스트 페이지에는 나오지 않는 때도 있습니다.

사이트에 미디어(이미지)가 나오지 않는 이유

사이트에 이미지가 나오지 않는 때를 다음 두 Html 소스로 가늠할 수 있습니다.

// 미디어 경로 변경 전
<img src="http://your-domain/wp-content/uploads/Tulips.jpg" srcset="http://your-domain/wp-content/uploads/Tulips.jpg 1024w, http://your-domain/wp-content/uploads/Tulips-300x225.jpg 300w, http://your-domain/wp-content/uploads/Tulips-768x576.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px">

// 미디어 경로 변경 후
<img src="http://your-domain/wp-content/uploads/Tulips.jpg" srcset="http://your-domain/newuploads/Tulips.jpg 1024w, http://your-domain/newuploads/Tulips-300x225.jpg 300w, http://your-domain/newuploads/Tulips-768x576.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px">

위 두 소스의 차이는 srcset 속성의 wp-content/uploads 경로가 newuploads 폴더로 변경된 것이 전부입니다. 결국, wp-content/uploads/Tulips.jpg 파일은 존재하지만, newuploads/Tulips.jpg 파일이 존재하지 않기에 미디어 경로 변경 후 사이트에서 미디어가 출력되지 않는 것입니다.

srcset 속성은 워드프레스의 소위 반응형 이미지에 관한 기능으로, 기본으로 생성되며 사용자 설정으로 제어할 수 있는데, 이 속성의 미디어 URL도 관리페이지의 미디어 목록이나 편집 화면처럼 사이트 전체의 미디어 경로에 따라 동적으로 생성됩니다.

이 문제를 해결하기 위해서 3가지 정도의 방법을 생각할 수 있습니다.

기존 미디어 폴더의 모든 파일을 새로운 폴더로 복사하기

단순하고 편리한 방법이지만, 호스팅 계정의 용량이 충분하지 않다면 검토 대상에 넣지 않는 것이 좋습니다.

srcset 사용하지 않기

다음 필터로 사이트 포스트의 미디어(이미지) 소스에 생성되는 srcset 속성을 중지할 수 있습니다.

// srcset 중지
add_filter( 'wp_calculate_image_srcset_meta', '__return_empty_array' );

srcset 속성 사용의 이점이 필요하지 않거나 워드프레스의 다양한 이미지 사이즈를 사용하지 않는다면 이 방법을 사용해도 됩니다.

데이터베이스 모든 테이블의 기존 미디어 파일 전체 경로 변경

가장 확실하며, 권장하는 방법으로 다음의 3가지로 나눌 수 있습니다.

  • 데이터베이스 테이블 필드의 특정 문자를 한꺼번에 변경하는 저장소 플러그인 사용
  • SQL 구문을 사용하여 데이터베이스 테이블 필드의 특정 문자를 일괄 변경
  • 데이터베이스 SQL 파일을 받아 편집기에서 기존 미디어 경로 문자열 패턴을 찾아 새로운 경로로 변경한 후 SQL 파일 다시 임포트

마지막 SQL 파일 다운로드 후 편집기에서 변경하는 방법을 개인적으로 대량의 정보 변경 시 자주 사용하며 실제 가장 쉽고 확실한 방법이지만, 선택의 문제입니다. 검색으로 쉽게 얻을 수 있으므로 3가지 방법에 관한 상세 설명은 생략합니다.

정리

미디어 경로 변경 후 이미지 등의 미디어가 출력되지 않는 이유에 관하여 포스트에서 예측하지 못한 때가 있을 수 있습니다. 또, 워드프레스 사용 중 미디어 경로 변경은 외부 서비스 또는 검색 엔진과 관련한 문제가 발생할 수 있으므로 빠르게 판단하여 주저 없이 처리해야 미련이 남지 않습니다. 이때, 계정 용량이 넘친다면 기존 폴더의 미디어를 그대로 두면서 새로운 미디어 저장 폴더에 기존 미디어를 복사하는 방법이 필요할 수 있습니다.