워드프레스에서 미디어 파일을 업로드할 때 업로드되는 파일 이름을 변경하고 싶은 경우가 있을 수 있습니다. 이 경우 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을 지원하지 않으면 가급적 웹호스팅을 변경하는 것을 고려해보시기 바랍니다.)
댓글 남기기