ワードプレスで画像ファイル名をアップロード時に自動変更する!

製作 プログラム

2016/06/29(水)

ワードプレスでのメディアアップロード

ワードプレスで画像等のメディアアップロードを行うと何もしなければそのままのファイル名でアップロードされます。なので自身のパソコンで管理するときにつけていたちょっと恥ずかしい名前(hage.jpgとか)のままアップロードされてしまうこともあります。

アップロード時にファイル名を自動変更する

なので、アップロード時に勝手にファイル名を付け替えてくれる方法を考えました。プラグインもあったのですがカンタンな処理だったのでfunctions.phpで対応しています。

また自動でつけるファイル名は他のファイルとかぶらないようにしたかったのでタイムスタンプがそのままファイル名になるようにしてみました。

以下をfunctions.phpに記述してください。


function rename_mediafile($filename) {
	$info = pathinfo($filename);
	$ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
	if( $info['filename'] != 'sitemap' ){
		$filename = strtolower(time().$ext);
	}
    return $filename;
}
add_filter('sanitize_file_name', 'rename_mediafile', 10);

コード説明

やっていることはsanitize_file_nameというフックにrename_mediafile()という自作関数を設定し、その自作関数の中でファイル名をタイプスタンプ(5行目のtime()のところです)に変更しています。

ワードプレスではいろんな処理を内部でするときにフックという通過点を通ります。今回のようにフックに関数を設定しておくことでフックを通過するタイミングで設定した関数が実行される仕組みになっています。

そしてsanitize_file_nameはワードプレスにアップロードする際に通過するフックなので、なにか画像等をアップロードするたびに上記コードが実行されるようになります。

※当初4行目はなかったのですが、sitemap.xmlが404エラーになってしまう問題が発生したので改良しました。詳しくは「ワードプレスでサイトマップが404エラーで見つからない場合」をご覧ください。