【WordPress】ファイルアップロード時にファイル名を自動で英数字に変換するコード

WordPressのメディアアップローダーで日本語のファイルをアップロードするとファイルがエンコードされます。

これを防ぐためにfunctions.phpに以下のコードを追加します。

if ( ! function_exists( 'my_rename_mediafile' ) ):

function my_rename_mediafile( $filename ) {
    $info = pathinfo( $filename );
    $ext = empty( $info['extension'] ) ? '' : '.' . $info['extension'];

    if ( $info['filename'] !== 'sitemap' ) {
        $filename = md5( time() . $ext );
    }
    return strlower( $filename );
}
add_filter( 'sanitize_file_name', 'my_rename_mediafile', 10 );

endif;

プラグインでも解決できる

日本語用プラグイン「WP Multibyte Patch」を一番最初に有効化しておけば上記のコードは必要ありませんでした…。

日本語のファイル名の画像は自動で英数字に変換されます。

日本語名ファイル名で起こる問題

なぜ日本語名ファイルがまずいのかというと…

  • 単純にエンコードされたファイル名が長すぎる
  • サーバー移行などの際にエラーが発生する可能性がある

などなど。

サーバー移行で失敗して最初から入れ直すとなったらとても辛いですね。
ボタン一つ二つの操作で綺麗に移行したいものです。