WordPress erlaubt in der Standardkonfiguration leider bis heute noch keine Verwendung von SVG-Bildern in der Mediathek. Versucht man eine SVG-Datei hochzuladen erscheint der Fehler „<Name>konnte nicht hochgeladen werden. Du bist leider nicht berechtigt, diesen Dateityp hochzuladen.“
Das hat natürlich auch einen Grund: SVGs sind ja XML-Dateien mit potenziell ausführbarem JS-Inhalt. Die „falsche“ SVG Datei könnte, genau wie eine „falsche“ JS oder HTM* Datei möglicherweise Schaden anrichten.
Unverständlicherweise gibt es bis heute aber noch keine „offizielle“ Möglichkeit, SVGs in seinem eigenen privaten Blog zu erlauben.
Lösung
In der functions.php
des aktuell verwendeten Themes kann man den Filter einfach umgehen.
<?php
/* SVG erlauben - the old way */
function kb_svg ( $svg_mime ){
$svg_mime['svg'] = 'image/svg+xml';
return $svg_mime;
}
add_filter( 'upload_mimes', 'kb_svg' );
/* SVG erlauben - the new way (WP 4.7+) */
function kb_ignore_upload_ext($checked, $file, $filename, $mimes){
if(!$checked['type']){
$wp_filetype = wp_check_filetype( $filename, $mimes );
$ext = $wp_filetype['ext'];
$type = $wp_filetype['type'];
$proper_filename = $filename;
if($type && 0 === strpos($type, 'image/') && $ext !== 'svg'){
$ext = $type = false;
}
$checked = compact('ext','type','proper_filename');
}
return $checked;
}
add_filter('wp_check_filetype_and_ext', 'kb_ignore_upload_ext', 10, 4);
?>
Natürlich sollte das nicht so sein, ein Theme sollte nicht die Sicherheitsfunktion des WordPress-Systems verbiegen müssen. Leider ist das bisher der schnellste Weg für Admins um SVG-Grafiken zu erlauben.