WordPressを使って日本語のサイトを作る場合、日本語を含むファイル名のファイルをアップロードしたいということがあります。
日本語版のWordPressに同梱されている「WP Multibyte Patch」プラグインを有効化している場合、日本語ファイル名はデフォルトでmd5ハッシュ値に変換されるように設定されています。
ブログなどに埋め込む写真のようなファイルの場合はあまり気になりませんが、書類ファイルなどの場合は「9e6c4b30163d973d011f10143b25efd8.pdf」のようなmd5ハッシュ値のファイル名よりも、日本語のファイル名のまま扱いたいですよね。
ということで、WP Multibyte Patch を有効化したままWordPressでファイルをアップロードする方法をメモしておきます。
WP Multibyte Patch では、「/wp-content/wpmp-config.php」に配置したファイルに設定を書き込むことができます。ここで、
$wpmp_conf['patch_sanitize_file_name'] = false;
と設定することによって、日本語ファイル名をmd5ハッシュ値に変換する処理を無効にできます。
ただし、ファイルの保存先のファイルシステムの文字コード(簡単にいうとWebサーバのOSの文字コード)がUTF-8ではない場合はファイル名が文字化けしてしまいます。
例えばWindows上でWebサーバを走らせている場合、ファイルシステムの文字コードは「CP932」です。この場合、文字化けを回避するには、wp-admin/includes/file.php の 328行目(バージョン 3.4.2の場合)の
if ( false === @ move_uploaded_file( $file['tmp_name'], $new_file ) )
となっている行を、
if ( false === @ move_uploaded_file( $file['tmp_name'], mb_convert_encoding($new_file, 'cp932', 'utf8') ) )
とすることによってファイル保存時にファイル名をUTF-8からCP932に変換して文字化けを防ぎます。
ただ、WordPress本体のファイルを変更することになるので、WordPress本体のアップデートを行う際には再び上記の修正を行う必要があります。