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”を変更する。
変更前
[php firstline=”114″]
/* 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;
}
[/php]
変更後
[php firstline=”114″]
/* 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;
}
[/php]
差分は以下のようになる。
[diff]
— 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;
[/diff]
これで、プレフィックスの重複が発生しなくなる。
コメントを残す