워드프레스 미디어 라이브러리에 파일 업로드 시 파일 이름 변경하기

워드프레스에서 미디어 파일을 업로드할 때 업로드되는 파일 이름을 변경하고 싶은 경우가 있을 수 있습니다. 이 경우 sanitize_file_name 필터를 사용할 수 있습니다. 예를 들어, 다음과 같은 코드를 테마의 함수 파일에 추가하면 이미지가 업로드될 때 파일 이름이 '글ID_image.jpg'와 같은 형식으로 변경됩니다.

// Change media filename to post_id_image in WordPress
function make_filename_hash($filename) {

if( isset($_REQUEST['post_id']) ) {
$post_id = (int)$_REQUEST['post_id'];
}else{
$post_id=0;
}
$info = pathinfo($filename);
$ext = empty($info['extension']) ? '' : '.' . $info['extension'];
$name = basename($filename, $ext);

if($post_id>0){
return $post_id."_".$name . $ext;
}else{
return $name . $ext;
}
}
add_filter('sanitize_file_name', 'make_filename_hash', 10);
// 출처: wordpress.stackexchange.com

가급적 차일드 테마를 만들어서 차일드 테마 내의 함수 파일에 위의 코드를 추가하시기 바랍니다.

미디어 파일을 업로드할 때 현재 날짜와 시간을 받아서 파일 이름으로 지정하려는 경우 다음과 같은 코드를 사용할 수 있습니다.

// Change filename during upload based on current date and time in WordPress
// 파일 업로드 시 현재 날짜와 시간으로 파일이름 변경
function make_filename_date($filename) {
$info = pathinfo($filename);
$ext = empty($info['extension']) ? '' : '.' . $info['extension'];
$name = basename($filename, $ext);
$currentDateTime = date('YmdHis'); // 날짜와 시간을 20190208054622 형식으로 받음
return $currentDateTime . $ext;
}
add_filter('sanitize_file_name', 'make_filename_date', 10);

실제로 위의 코드를 사용하면 이미지 파일을 업로드할 경우 다음과 같이 변경됩니다.

워드프레스 이미지 파일 업로드 시 파일이름 변경하기오후 2시 46분에 업로드가 되었지만 파일이름에는 0546(오전 5시 46분)으로 표시됩니다. 이것은 서버 시간에 기초하기 때문입니다. 이 부분을 수정하고 싶다면 우리나라 시간대를 표시하도록 다음 라인을 추가하면 됩니다.

date_default_timezone_set("Asia/Seoul");

그러면 워드프레스에 설정된 시간대가 '서울'로 지정된 경우 날짜와 시간이 제대로 변환됩니다.

워드프레스 미디어 파일 이름 변경

일부 웹호스팅에서 파일 이름에 한글이 포함되면 오류가 발생하는 경우가 있습니다. 이런 경우에 위의 코드를 사용하면 한글로 된 이미지 파일 이름이 숫자로 변경되므로 임시적인 해결책이 될 수 있을 것 같습니다. (한글 URL을 사용할 수 없는 웹호스팅 환경에서 테스트를 해보지 않았습니다. 한글 URL을 지원하지 않으면 가급적 웹호스팅을 변경하는 것을 고려해보시기 바랍니다.)

참고:

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

댓글 남기기

* 이메일 정보는 공개되지 않습니다.