Come caricare SVG in WordPress 4.9.8?

12 set 2018, 12:05:17
Visualizzazioni: 17.7K
Voti: 7

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. Errore di caricamento SVG

3
Commenti

Guarda l'estensione del file. Stai caricando un file XML, non un SVG.

Jacob Peattie Jacob Peattie
12 set 2018 12:28:09

@JacobPeattie SVG è un formato di file basato su XML e questo tipo mime è corretto in molti contesti. Forse ti riferisci alla soluzione di Syed e per quanto riguarda WordPress, image/svg senza il +xml è effettivamente la risposta.

JDandChips JDandChips
9 set 2020 11:32:56

Se stai leggendo questo e riesci a caricare un SVG su WordPress ma non viene visualizzato, controlla la larghezza e l'altezza, la mia di default è 1x1

rob rob
8 dic 2020 19:24:00
Tutte le risposte alla domanda 6
2
12

@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');
20 ago 2019 11:37:44
Commenti

rimuovere il "+xml" ha funzionato, grazie

Pons Pons
23 set 2019 11:53:08

Questa è la risposta migliore per chi cerca di fare a meno dell'uso del plugin.

akshay saxena akshay saxena
4 giu 2021 09:00:12
2

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.

13 set 2018 04:07:01
Commenti

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

Sarath Sarath
14 set 2018 09:15:38

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.

Tony Djukic Tony Djukic
7 mag 2020 02:45:51
0
//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');
19 mar 2019 19:19:30
0

Dopo aver aggiunto l'azione upload_mimes, se qualcuno incontra ancora problemi, aggiungi questo nel tuo file wp-config.php

define( 'ALLOW_UNFILTERED_UPLOADS', true );
26 lug 2019 10:03:17
1

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' );
7 mag 2020 00:28:41
Commenti

Grazie amico. Funziona.. basta rimuovere quel ".attachment-266x266," non è correlato

Sagive Sagive
28 gen 2022 09:10:39
0

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>';
});
13 set 2020 18:38:11