問題描述

我在我的函數 PHP 文件中有一個片段,允許我上傳 SVG 文件。從今天升級到最新版本的 WP,我無法再上傳 svgs 。我也嘗試了 CSS 技巧網站的第二個代碼片段,也不工作。

有人知道 a) 最後一次更新可能導致了什麼,以及 b) 有誰知道一個工作。

這是我通常使用的代碼:

function svg_mime_types( $mimes ) {
   mimes['svg'] = 'image/svg+xml';
   return $mimes;}
add_filter( 'upload_mimes', 'svg_mime_types' );

非常感謝

保羅。

最佳解決方案

在 WordPress 4.7.1 a change was introduced 中,檢查上傳文件的真實 MIME 類型。這會中斷上傳文件類型,如 SVG 或 DOCX 。 WordPress Core 中已經存在此問題的門票,您可以在這裏閲讀更多關於這一點:

臨時和推薦的解決方法 (直到此問題被修復的時間) 是以下插件:禁用 Real MIME 檢查

如果你不想使用這個插件,這裏有同樣的功能:

add_filter( 'wp_check_filetype_and_ext', function($data, $file, $filename, $mimes) {
    global $wp_version;

    if ( '4.7.2' !== $wp_version ) {
       return $data;
    }

    $filetype = wp_check_filetype( $filename, $mimes );

    return [
        'ext'             => $filetype['ext'],
        'type'            => $filetype['type'],
        'proper_filename' => $data['proper_filename']
    ];

}, 10, 4 );

請注意,此修補程序包含版本檢查,以便在 WordPress 更新後立即禁用該修復程序。

編輯

這個問題最初在 4.7.2 中被修正。但是,由於 4.7.2 was an urgent security release,修復沒有使它成為該版本。現在應該在 4.7.3 中修復。

次佳解決方案

似乎這樣可能與這張票相關的 https://core.trac.wordpress.org/ticket/39552,看起來像在 4.7.1 中被破壞的東西

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。