アップロードしたPDFファイルのファイル名の変更

PDFファイルのファイル名が日本語の場合、アップロードしたファイルのリンクは urlencodeされていないため、safari等で表示できなくなる問題があるそうです。

トピック: WordPressで濁点ありの日本語ファイルをsafariでも表示でされない。 « サポートフォーラム

以下のようにフィルターを使うと、アップロードしたファイル名を変更することが出来ます。

if( mb_strlen( $filename ) !== strlen( $filename ) ) 

の部分は、日本語などのファイル名の場合、mb_strlen()とstrlen()が一致しないことを利用して、簡易的言語判定を行っています。

function make_filename_hash( $filename ) {
	
 $info= pathinfo($filename);

	if( isset( $info['extension'] ) && 'pdf'== $info['extension'] ){
		
		$ext = '.' . $info['extension'];

		if( mb_strlen( $filename ) !== strlen( $filename ) ) {

			return md5($name) . $ext;
		} else {
			
			return $filename;
		}
	}
	return $filename;
}
add_filter('sanitize_file_name', 'make_filename_hash', 11);
[emulsion_relate_posts]