워드프레스에서 이미지를 업로드할 때 파일 이름을 숫자로 바꾸기

0

몇 년 전만 해도 한글 URL을 지원하지 않는 웹호스팅이 제법 있었습니다. 특히 Bluehost 등 해외 호스팅에서는 한글과 관련하여 문제가 없었지만 국내 웹호스팅에서 URL에 한글을 사용할 수 없는 문제가 발생하는 웃지 못할 일이 발생했습니다.

최근에는 URL에 한글이 포함되면 오류가 발생하는 문제가 많이 해결된 것 같습니다. 하지만 아직도 드물지만 URL에 한글이 포함되면 문제가 발생하는 호스팅이 있습니다. 또, 서버를 직접 세팅하는 경우에 서버 세팅을 잘못하여 URL에 한글이 포함되면 문제가 발생하는 경우도 있습니다.

URL에 한글이 포함되면 문제가 발생하면 워드프레스에서 고유주소를 숫자로 표시하도록 설정해주면 되지만 SEO적인 측면에서 바람직하지 않습니다.

그리고 한글 URL 문제가 발생하는 경우 파일 이름에 한글이 포함된 미디어 파일/이미지 파일을 업로드하면 그림이 깨져나올 것입니다. 그런 경우 다음 코드를 사용하여 업로드하는 이미지의 파일 이름을 영문과 숫자로 바꾸어줄 수 있습니다.

/**
* Produces cleaner filenames for uploads for non-latin languages
* 업로드 시 파일 이름에서 한글 등 비영문 문자 제거하기
*
* @param string $filename
* @return string
*/
function change_none_latin_file_name( $filename ) {

$extension = end(explode(".", $filename));

$append = date('YmdHis');
$sanitized_filename = 'image-' . $append . '.' . $extension;

return $sanitized_filename;
}
add_filter( 'sanitize_file_name', 'change_none_latin_file_name', 10, 1 );

파일 이름을 image-20180904135743.jpg 형식으로 표시되도록 설정해보았습니다. 숫자부분은 현재 날짜(시분초 포함)를 의미합니다.

아바다 테마가 설치된 워드프레스 사이트에서 테스트해보니 문제 없이 작동하네요. 다른 환경에서도 잘 작동할 것 같지만, 환경에 따라 문제를 일으킬 가능성도 있습니다.

PHP에 대해 문외한이라서 제대로 된 코드인지는 모르겠습니다. 머리 속에 생각나는 대로 대충 만들어보았습니다. 혹시 문법에 오류가 있다면 여기에서 살짝 알려주세요.

참고로 이미지 파일 이름에 한글이 포함되면 추후에 사이트를 이전(Migration)할 때에도 이미지 파일이 깨져서 오류가 발생할 수 있으므로 가급적 이미지 파일 이름에 한글을 포함하지 않는 것이 좋을 수 있습니다.

참고:

Related Posts