- Posted at 2013年06月30日 11:34
- Modified at 2013年06月30日 11:35
WordPressのUploadPlusプラグインでprefixが重複する事象を直す
WordPressのUploadPlusプラグイン(現バージョン:3.2.1)は、ファイルアップロード時のファイルに対し、
- プレフィックスの追加(固定文字、日時等)
- 大文字・小文字の変換
- 文字変換
等を自動で行ってくれるプラグイン。ところがこのプラグインが、最近(とは言ってもここ数ヶ月)になって、以下のようにプレフィックスを2重で出力する事象が出るようになった。(下記画像の場合、本来”20130628_xnview.pngとなるところが、”20130628_20130628_xnview.png”となっている)
検索してみたところ、以下のページを発見。
WordPress › Support » File name get Double when using Custom Prefix
この通りにソースコード”(WordPressインストールディレクトリ)/wp-content/plugins/uploadplus/inc/core.class.php”を変更する。
変更前
/* sanitize uploaded file name */ function upp_mangle_filename($file_name){ global $sep; $ext = self::find_extension($file_name); $utf8 = get_option('uploadplus_utf8toascii'); if( $utf8[0] == "1" ): $file_name = self::_utf8_transliteration( $file_name ); endif; $file_name = self::_clean_global( $file_name ); $file_name = self::_clean_filename( $ext, $file_name ); $file_name = self::_clean_case( $file_name ); $file_name = self::_add_prefix( $file_name ); return $file_name; }
変更後
/* sanitize uploaded file name */ function upp_mangle_filename($file_name){ if(isset($GLOBALS['UPLOAD-PLUS-NAMES'][$file_name])) return $file_name; global $sep; $ext = self::find_extension($file_name); $utf8 = get_option('uploadplus_utf8toascii'); if( $utf8[0] == "1" ): $file_name = self::_utf8_transliteration( $file_name ); endif; $file_name = self::_clean_global( $file_name ); $file_name = self::_clean_filename( $ext, $file_name ); $file_name = self::_clean_case( $file_name ); $file_name = self::_add_prefix( $file_name ); $GLOBALS['UPLOAD-PLUS-NAMES'][$file_name] = 1; return $file_name; }
差分は以下のようになる。
--- core.class.php.old Mon Feb 25 23:59:33 2013 +++ core.class.php Sun Jun 30 11:23:59 2013 @@ -115,0 +116,2 @@ + if(isset($GLOBALS['UPLOAD-PLUS-NAMES'][$file_name])) return $file_name; + @@ -128 +130,2 @@ - + + $GLOBALS['UPLOAD-PLUS-NAMES'][$file_name] = 1;
これで、プレフィックスの重複が発生しなくなる。