WordPress メディアライブラリにファイルをアップロード時にファイルの名前を変更する

Last Updated:2019年02月08日| | コメントを残す

WordPressでメディアファイルをアップロードするときにアップロードされるファイル名を変更したい場合があります。 この場合、 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);

実際に上記のコードを使用すると、画像ファイルをアップロードする場合は、次のように変更されます。

WordPress 画像ファイルのアップロード時にファイルの名前を変更する午後2時46分にアップロードがされたが、ファイル名には、0546(午前5時46分)に表示されます。 これは、サーバーの時間に基づいているためです。 この部分を修正したい場合は、韓国時間帯を表示するように次の行を追加します。

date_default_timezone_set("Asia/Seoul");

その後、 WordPressで設定されたタイムゾーンが「ソウル」に指定されている場合、日付と時刻が正しく変換されます。

WordPress メディアファイルの名前の変更

一部のWebホスティングで、ファイル名にハングルが含まれる場合、エラーが発生する場合があります。 このような場合に、上記のコードを使用すると、ハングルで画像ファイル名が数字に変更されるため、一時的な解決策になることができるようになります。 (ハングルのURLを使用することができないWebホスティング環境でテストをしてみました。ハングルのURLをサポートしない場合、なるべく ウェブホスティングを変更することを検討してください。)

メモ:


コメントを残す

コメント