日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

php图片传入及改名代码,WordPress添加媒体中文名图片上传改名(优化版)

發(fā)布時(shí)間:2025/4/5 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php图片传入及改名代码,WordPress添加媒体中文名图片上传改名(优化版) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

WordPress是國外程序,對(duì)中文命名的圖片不友好,所以上傳后就會(huì)出現(xiàn)錯(cuò)誤。但是我們有時(shí)候保存在桌面或者其他地方的圖片就是中文命名,現(xiàn)在要上傳到WordPress多媒體中,或者上傳到文章中,我們改怎么辦?

俗話說:“功夫不負(fù)苦心人呢”,問題還是被我給發(fā)現(xiàn)了,原來編碼的問題如果我們上傳的圖片名稱是中文的那么wp的縮略圖機(jī)制處理不了于是就出現(xiàn)了我這樣的問題。

在wp-admin/includes/file.php文件中有這么一段代碼其中第2行控制著我們上傳圖片的命名:

//?Move?the?file?to?the?uploads?dir

$new_file?=?$uploads[‘path’]?.?“/$filename”; ?//新上傳的圖片按上傳時(shí)的名稱顯示

if?(?false?===?@?move_uploaded_file(?$file[‘tmp_name’],?$new_file?)?)?{

if?(?0?===?strpos(?$uploads[‘basedir’],?ABSPATH?)?)

$error_path?=?str_replace(?ABSPATH,?”,?$uploads[‘basedir’]?)?.?$uploads[‘subdir’];

else

$error_path?=?basename(?$uploads[‘basedir’]?)?.?$uploads[‘subdir’];

return?$upload_error_handler(?$file,?sprintf(?__(‘The?uploaded?file?could?not?be?moved?to?%s.’?),?$error_path?)?);

}

既然定位到了問題所在當(dāng)然就是趕緊解決掉好讓圖片正常顯示了!

處理方法匯總

問題既然浮出了水面,按照一個(gè)度娘的忠實(shí)粉絲當(dāng)然是先上百度去找答案,下面是百度查找到的3種答案。

第一種:修改wp的程序文件file.php

在file.php中查找下面這段代碼

$new_file?=?$uploads[‘path’]?.?“/$filename”;

把上述代碼修改成

$new_file?=?$uploads[‘path’]?.?“/”.date(“YmdHis”).floor(microtime()*1000).“.”.$ext;

顯示的結(jié)果是以“年月日時(shí)分秒+千位毫秒整數(shù)”這樣的格式命名的。

這 種方法弊端很大:第一上傳的圖片全部都會(huì)重命名;第二wp更新到新版本還要重新修改代碼。

第二種:在主題functions.php中添加代碼

function?wpyou_rename_upload_file_prefilter($file){

$time=date(“Y-m-d”);

$file[‘name’]?=?$time.“”.mt_rand(1,100).“.”.pathinfo($file[‘name’]?,?PATHINFO_EXTENSION);

return?$file;

}

add_filter(‘wp_handle_upload_prefilter’,?‘wpyou_rename_upload_file_prefilter’);

實(shí)現(xiàn)的效果和第一種的結(jié)果是一樣的,這樣每次更新wp都不用再反復(fù)修改程序文件了,但是弊端還是有就是上傳的圖片全部都會(huì)重命名。

完美的解決方法

如果按照上面的方法修改的話我上傳的圖片都要被重命名對(duì)于我這種用云盤來存儲(chǔ)圖片的用戶來說是個(gè)麻煩,于是只能自己動(dòng)手了。下面給出一種完美的解決方案,當(dāng)你上傳圖片時(shí),主題會(huì)檢測圖片名中是否包含中文字符,如果包含就執(zhí)行重命名的機(jī)制,如果不包含那么直接用上傳的名稱作為圖片名,直接添加下面這段代碼到主題的functions.php文件中即可。

通過上面的代碼片段中文圖片不能顯示縮略圖的問題終于完美解決了。看來以后還是要研究一下wp程序的一些功能呀!今天把這種方法寫到這里希望可以幫助到遇到跟我一樣問題的朋友!

/* 中文名圖片上傳改名 /* ——————- */ function tin_custom_upload_name($file){ if(preg_match(‘/[一-龥]/u’,$file[‘name’])): $ext=ltrim(strrchr($file[‘name’],’.’),’.’); $file[‘name’]=preg_replace(‘#^www.#’, ”, strtolower($_SERVER[‘SERVER_NAME’])).’_’.date(‘Y-m-d_H-i-s’).’.’.$ext; endif; return $file; } add_filter(‘wp_handle_upload_prefilter’,’tin_custom_upload_name’,5,1);

如果上面的不行可以試試下面的這個(gè)自用的,感覺可以(優(yōu)化版)

//WordPress上傳中文字體圖片自動(dòng)轉(zhuǎn)換為域名日期時(shí)間

function tin_custom_upload_name($file){

if(preg_match('/[一-龥]/u',$file['name'])):

$ext=ltrim(strrchr($file['name'],'.'),'.');

$file['name']=preg_replace('#^www.#', '', strtolower($_SERVER['SERVER_NAME'])).'_'.date('Y-m-d_H-i-s').'.'.$ext;

endif;

return $file;}

add_filter('wp_handle_upload_prefilter','tin_custom_upload_name',5,1);

WordPress添加媒體上傳圖片的時(shí)候,我們有時(shí)候選擇的圖片是中文名,由于WordPress是國外程序,對(duì)中文命名的圖片不友好,所以上傳后就會(huì)出現(xiàn)錯(cuò)誤。但是我們有時(shí)候保存在桌面或者其他地方的圖片就是中文命名,現(xiàn)在要上傳到WordPress多媒體中,或者上傳到文章中,我們改怎么辦?

俗話說:“功夫不負(fù)苦心人呢”,問題還是被我給發(fā)現(xiàn)了,原來編碼的問題如果我們上傳的圖片名稱是中文的那么wp的縮略圖機(jī)制處理不了于是就出現(xiàn)了我這樣的問題。

在wp-admin/includes/file.php文件中有這么一段代碼其中第2行控制著我們上傳圖片的命名:

//?Move?the?file?to?the?uploads?dir

$new_file?=?$uploads[‘path’]?.?“/$filename”; ?//新上傳的圖片按上傳時(shí)的名稱顯示

if?(?false?===?@?move_uploaded_file(?$file[‘tmp_name’],?$new_file?)?)?{

if?(?0?===?strpos(?$uploads[‘basedir’],?ABSPATH?)?)

$error_path?=?str_replace(?ABSPATH,?”,?$uploads[‘basedir’]?)?.?$uploads[‘subdir’];

else

$error_path?=?basename(?$uploads[‘basedir’]?)?.?$uploads[‘subdir’];

return?$upload_error_handler(?$file,?sprintf(?__(‘The?uploaded?file?could?not?be?moved?to?%s.’?),?$error_path?)?);

}

既然定位到了問題所在當(dāng)然就是趕緊解決掉好讓圖片正常顯示了!

處理方法匯總

問題既然浮出了水面,按照一個(gè)度娘的忠實(shí)粉絲當(dāng)然是先上百度去找答案,下面是百度查找到的3種答案。

第一種:修改wp的程序文件file.php

在file.php中查找下面這段代碼

$new_file?=?$uploads[‘path’]?.?“/$filename”;

把上述代碼修改成

$new_file?=?$uploads[‘path’]?.?“/”.date(“YmdHis”).floor(microtime()*1000).“.”.$ext;

顯示的結(jié)果是以“年月日時(shí)分秒+千位毫秒整數(shù)”這樣的格式命名的。

這 種方法弊端很大:第一上傳的圖片全部都會(huì)重命名;第二wp更新到新版本還要重新修改代碼。

第二種:在主題functions.php中添加代碼

function?wpyou_rename_upload_file_prefilter($file){

$time=date(“Y-m-d”);

$file[‘name’]?=?$time.“”.mt_rand(1,100).“.”.pathinfo($file[‘name’]?,?PATHINFO_EXTENSION);

return?$file;

}

add_filter(‘wp_handle_upload_prefilter’,?‘wpyou_rename_upload_file_prefilter’);

實(shí)現(xiàn)的效果和第一種的結(jié)果是一樣的,這樣每次更新wp都不用再反復(fù)修改程序文件了,但是弊端還是有就是上傳的圖片全部都會(huì)重命名。

完美的解決方法

如果按照上面的方法修改的話我上傳的圖片都要被重命名對(duì)于我這種用云盤來存儲(chǔ)圖片的用戶來說是個(gè)麻煩,于是只能自己動(dòng)手了。下面給出一種完美的解決方案,當(dāng)你上傳圖片時(shí),主題會(huì)檢測圖片名中是否包含中文字符,如果包含就執(zhí)行重命名的機(jī)制,如果不包含那么直接用上傳的名稱作為圖片名,直接添加下面這段代碼到主題的functions.php文件中即可。

通過上面的代碼片段中文圖片不能顯示縮略圖的問題終于完美解決了。看來以后還是要研究一下wp程序的一些功能呀!今天把這種方法寫到這里希望可以幫助到遇到跟我一樣問題的朋友!

/* 中文名圖片上傳改名 /* ——————- */ function tin_custom_upload_name($file){ if(preg_match(‘/[一-龥]/u’,$file[‘name’])): $ext=ltrim(strrchr($file[‘name’],’.’),’.’); $file[‘name’]=preg_replace(‘#^www.#’, ”, strtolower($_SERVER[‘SERVER_NAME’])).’_’.date(‘Y-m-d_H-i-s’).’.’.$ext; endif; return $file; } add_filter(‘wp_handle_upload_prefilter’,’tin_custom_upload_name’,5,1);

總結(jié)

以上是生活随笔為你收集整理的php图片传入及改名代码,WordPress添加媒体中文名图片上传改名(优化版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。