wordpress 上傳附件中文文件名標題亂碼解決辦法-中文檔名附件標題亂碼解決方法 – WORDPRESS ATTACHMENT TITLE ISSUE

wordpress 上傳附件中文文件名標題亂碼解決辦法-中文檔名附件標題亂碼解決方法 – WORDPRESS ATTACHMENT TITLE ISSUE-圖片1

WORDPRESS ATTACHMENT TITLE ISSUE
WordPress 的整個發展過程支援 163種語系 ,其中經常維護的都有72種語系之多。當然繁體中文在很多志工的貢獻服務下,也成為其中很重要的一支語系。不過關于核心程式的變動,偶而還是會造成其他非英語系的系統有一些使用上的錯誤。在經歷幾次資料庫亂碼的災難后,個人的使用習慣是將文章代稱改成英文,另外也將上傳的媒體檔案名稱避開以中文方式命名,簡化對于系統程式字元編碼的依賴。而最近聽到朋友反應,原本中文檔名附件支援好好的,好像在最新的版本又發生標題出現亂碼的現象(圖一),雖然這個附件的標題還是可以自行修改成正確的中文說明,不過對于一次需要上傳很多附件檔案的朋友,還是造成了一些小小的困擾。接著就跟大家分享一下官網上官于這個程式 bug的解決方法,有需要的朋友也可以參考一下。

中文檔名附件標題亂碼解決方法
檢視了一下官網上的Trac Ticket Reports,這個中文副檔名標題亂碼的Bug問題應該會在4.6.2版獲得修正,如果等不及需要先修改的話,可以參考一下#37989 上有人提出的解決方法來修改/wp-admin/includes/media.php 檔案,以下是米粒在線另外一個方法是編輯主題的函數文件functions.php檔案。

使用文字編輯器編輯主題的函數 functions.php 檔案,請填入以下語法。

function wp37989_fix_encoded_attachment_titles( $data ) {
if ( empty( $_FILES ) ) {
return $data;
}

$file = current( $_FILES );
$ext = pathinfo( $file['name'], PATHINFO_EXTENSION );
$name = wp_basename( $file['name'], ".$ext" );

$data['post_title'] = sanitize_text_field( $name );

return $data;
}
add_filter( 'wp_insert_attachment_data', 'wp37989_fix_encoded_attachment_titles' );

//假如上段函數添加后上傳還是亂碼的話,那么再增加以下函數即可解決。(成功的話忽略以下函數)
function upload_file($filename) {
$parts = explode('.', $filename);
$filename = array_shift($parts);
$extension = array_pop($parts);
foreach ( (array) $parts as $part)
$filename .= '.' . $part;
if(preg_match('/[\x{4E00}-\x{9FA5}]/u', $filename)){
$filename = md5($filename);
}
$filename .= '.' . $extension;
return $filename ;
}
add_filter('sanitize_file_name', 'upload_file', 5,1);

 

語法編輯完成以后請上傳到到主題文件夾下,這時再上傳中文檔名附件時,可以看到標題恢復正常的中文顯示了(圖二)。

wordpress 上傳附件中文文件名標題亂碼解決辦法-中文檔名附件標題亂碼解決方法 – WORDPRESS ATTACHMENT TITLE ISSUE-圖片2

(圖一)中文檔名附件標題亂碼

wordpress 上傳附件中文文件名標題亂碼解決辦法-中文檔名附件標題亂碼解決方法 – WORDPRESS ATTACHMENT TITLE ISSUE-圖片3

(圖二)中文檔名附件標題亂碼修正完成

 

總結
在做網站管理時常常會遇到系統程式升級或者是主題/外掛程式等等的升級,并不一定每一次的升級都可以保證我們的網站運作正確。不過基于網站安全與正常運作的最基本原則下,確實的做好網站管理是每一位網站管理者的職責。很高興在 WordPress 有非常多的志工,隨時提供關于程式漏洞或是 Bug的修正程式,讓我們可以安心又安全的維持網站運作,這應該又是一個讓人不得不愛上 WordPress的原因吧。

 
  • 本文由 米粒在線 發表于 2016年11月28日07:56:39
  • 轉載請務必保留本文鏈接:http://www.bjmhhq.com/42637.html
網站建設

網站速度很慢?使用 WordPress 短時緩存(Transients)來優化數據庫查詢和 HTTP 響應!

每個人都想要一個速度很快的網站,網站速度越快,用戶停留和點擊頁面或購買產品的時間就越長,加快網站速度的方法之一是開啟緩存,而緩存背后的邏輯就是存儲信息,更具體一點說,就是找到一個比連接數據庫更快的存儲...
    • 米粒在線

      還有個辦法解決,就是如果是虛擬主機,看是否支持URL編碼設置。如果有的話,設置改為UTF-8或者GBK解決。

    發表評論

    匿名網友
    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
    確定

    拖動滑塊以完成驗證