国产又猛又爽又黄视频|在线观看人成视频免费|少妇高潮太爽了在线视频|911国产免费无码专区|特黄做受又大又粗又长大片|欧美一级二级免费在线观看|日日夜人人澡人人澡人人看免|欧洲午夜精品一级毛片在线播放

WordPress用wp_handle_upload_prefilter實現(xiàn)中文命名圖片重命名上傳

2018-09-08 19:32 欄目:技術(shù)開發(fā) 查看(8922)

WordPress自帶的上傳圖片程序最后保存的文件名是圖片的原始文件名,而且在默認(rèn)情況下,在windows服務(wù)器上是會出現(xiàn)上傳失敗的。如下圖:

253

解決方案

其實網(wǎng)上也有類似的解決方案,這里只是解釋一下,實現(xiàn)代碼如下:

function wg_rename_upload_file_prefilter($file){
	$prefix=date("YmdHis").mt_rand(1,100);
	$file['name'] = $prefix.'.'.pathinfo($file['name'] , PATHINFO_EXTENSION);
	return $file;
}
add_filter('wp_handle_upload_prefilter', 'wg_rename_upload_file_prefilter');

把以上代碼加在functions.php中,也可以做成一個插件。

為什么這么做?

首先,熟悉WordPress的都知道add_filter是用于過濾過濾器中的內(nèi)容的,簡單的說就是把原先默認(rèn)的內(nèi)容給“篡改”掉,當(dāng)然是按照我們想要實現(xiàn)的意圖篡改。那么為什么就用到了wp_handle_upload_prefilter這個過濾器呢?當(dāng)然是需要一個簡單的分析過程的,分析過程如下:

①、首先從后臺添加媒體頁面可以知道WordPress上傳文件入口文件為wp-admin/media-upload.php,在里面可以看到使用do_action鉤子添加了media_upload_xxx方法。

②、進一部分追蹤我們可以發(fā)現(xiàn)調(diào)用的是wp-admin/includes/media.php中的media_handle_upload方法,在該方法中完成附件信息寫入數(shù)據(jù)庫,而上傳的文件保存過程的代碼這方法本身并沒有,而是它調(diào)用另外的一個方法(wp_handle_upload)。

③、而wp_handle_upload來自wp-admin/includes/file.php,在該方法中我們可以看到有兩個過濾器wp_handle_upload_prefilter和wp_handle_upload,前者就是可以修改來自文件全局變量的信息的,而后者則是修改返回信息的。

④、通過打印或者可以看到如下信息,其實跟全局變量類似,包含name、type、temp_name、size、error等,而name就是文件名,原始的文件名。而且后續(xù)在的操作是完全按照這個數(shù)值來進行操作的,所以我們應(yīng)該替換掉這個信息。

QQ截圖20180908192301

⑤、而在該方法中有如下代碼,就是一個過濾器,我們可以過濾$file,我們可以把$file['name']改成其他的值,比如上面就是年月日時分秒然后加上一個1-100的正整數(shù)隨機數(shù)作為新文件名,就這樣就實現(xiàn)了文件重命名。

$file = apply_filters( 'wp_handle_upload_prefilter', $file );

替換后在該方法中打印$file,就變成了下面這樣的了

QQ截圖20180908192913

以上就是開頭的解決方案的簡單分析過程,如果你只是做運營而非做技術(shù)開發(fā)的朋友,那么請忽略下面的分析過程。

與我們的項目經(jīng)理聯(lián)系
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

轉(zhuǎn)載請注明出處:WordPress用wp_handle_upload_prefilter實現(xiàn)中文命名圖片重命名上傳 - 微構(gòu)網(wǎng)絡(luò)
分享: