問題描述
我在我的函數 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 中已經存在此問題的門票,您可以在這裏閲讀更多關於這一點:
-
一些 Non-image 文件在 4.7.1 之後無法上傳 (https://core.trac.wordpress.org/ticket/39550)
-
SVG 上傳支持在 4.7.1(https://core.trac.wordpress.org/ticket/39552)
臨時和推薦的解決方法 (直到此問題被修復的時間) 是以下插件:禁用 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。