Come caricare SVG in WordPress 4.9.8?
Ho provato a caricare dopo aver installato diversi plugin. Ho anche aggiunto un filtro al file functions.php.
function add_svg_to_upload_mimes( $upload_mimes ) {
$upload_mimes['svg'] = 'image/svg+xml'; // Aggiunge il tipo MIME per SVG
$upload_mimes['svgz'] = 'image/svg+xml'; // Aggiunge il tipo MIME per SVGZ
return $upload_mimes;
}
add_filter( 'upload_mimes', 'add_svg_to_upload_mimes', 10, 1 ); // Filtro per abilitare SVG
Ma caricando un SVG continua a dare il seguente errore.

@rana-umer il tuo codice è corretto, basta rimuovere il "+xml" dopo 'image/svg'.
//aggiungi SVG ai tipi di file consentiti per l'upload
function add_file_types_to_uploads($file_types){
$new_filetypes = array();
$new_filetypes['svg'] = 'image/svg';
$file_types = array_merge($file_types, $new_filetypes );
return $file_types;
}
add_action('upload_mimes', 'add_file_types_to_uploads');

Questa domanda mi ha fatto grattare la testa. Sì, come mai WordPress non supporta questo nativamente? E poi ho scoperto il perché.
Hai chiesto come caricare SVG in WordPress 4.9.8 (la versione corrente al momento della scrittura). Hai menzionato di aver "provato a caricare dopo aver installato diversi plugin". Non dici quali plugin, né se sono relativi a SVG.
Per come comprendo la situazione, la risposta più sicura e appropriata al momento è utilizzare SVF Safe (un plugin scritto proprio per questo scopo) di Darrell Doyle. Se questo plugin non funziona per te, allora suggerirei che hai un conflitto da qualche altra parte, e dovresti seguire le solite procedure per risolverlo. Personalmente, se questo plugin non funzionasse per me, rinuncerei all'idea di caricare SVG.
Se non l'hai già fatto, posso suggerirti di leggere "SVG Uploads in WordPress - la scomoda verità" di Bjorn Johansen e/o "Come abilitare in sicurezza il supporto SVG in WordPress - con 2 semplici clic" di Brian Jackson. Almeno dovresti sapere in che cosa ti stai cacciando.

Ho provato a caricare il file SVG con il plugin suggerito. Ha funzionato come previsto e anche l'anteprima è visibile. Grazie mille per il suggerimento. @Tedinoz

C'è in realtà molto di più oltre a questa risposta - l'SVG deve essere formattato correttamente, altrimenti non verrà caricato, indipendentemente dal codice o dal plugin utilizzato: https://kinsta.com/blog/wordpress-svg/#attachment_10218
Vedo solo ora che Darrell Doyle ha scritto il sanificatore per gli SVG, quindi immagino sia integrato nel suo plugin. Ma per chi vuole farlo senza un plugin, è importante comprendere il processo di sanificazione e cosa è necessario.

//aggiunge SVG ai tipi di file consentiti per il caricamento
function add_file_types_to_uploads($file_types){
$new_filetypes = array();
$new_filetypes['svg'] = 'image/svg+xml';
$file_types = array_merge($file_types, $new_filetypes );
return $file_types;
}
add_action('upload_mimes', 'add_file_types_to_uploads');

La prima funzione verifica la versione di WordPress e aggiunge il supporto per versioni inferiori alla 4.8. La seconda funzione registra il tipo di file MIME (SVG) e l'ultima corregge le miniature nella libreria media.
/**
* Aggiunge supporto SVG
*
*/
add_filter( 'wp_check_filetype_and_ext', function( $data, $file, $filename, $mimes) {
global $wp_version;
if( $wp_version == '4.7' || ( (float) $wp_version < 4.7 ) ) {
return $data;
}
$filetype = wp_check_filetype( $filename, $mimes );
return [
'ext' => $filetype['ext'],
'type' => $filetype['type'],
'proper_filename' => $data['proper_filename']
];
}, 10, 4 );
function ns_mime_types( $mimes ){
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
add_filter( 'upload_mimes', 'ns_mime_types' );
function ns_fix_svg() {
echo '<style type="text/css">.thumbnail img { width: 100% !important; height: auto !important;} </style>';
}
add_action( 'admin_head', 'ns_fix_svg' );

Aggiungi questi hook, ho testato su WordPress 5.3 e funzionano:
// Permetti SVG
add_filter('wp_check_filetype_and_ext', function ($data, $file, $filename, $mimes) {
if (!$data['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;
}
$data['ext'] = $ext;
$data['type'] = $type;
$data['proper_filename'] = $proper_filename;
}
return $data;
}, 10, 4);
add_filter('upload_mimes', function ($mimes) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
});
add_action('admin_head', function () {
echo '<style type="text/css">
.media-icon img[src$=".svg"], img[src$=".svg"].attachment-post-thumbnail {
width: 100% !important;
height: auto !important;
}</style>';
});
