Cum să încarci fișiere SVG în WordPress 4.9.8?

12 sept. 2018, 12:05:17
Vizualizări: 17.7K
Voturi: 7

Am încercat să încarc după instalarea diferitelor plugin-uri. Am adăugat și un filtru în fișierul functions.php.

    function add_svg_to_upload_mimes( $upload_mimes ) { 
    $upload_mimes['svg'] = 'image/svg+xml'; 
    $upload_mimes['svgz'] = 'image/svg+xml'; 
    return $upload_mimes; 
    } 
    add_filter( 'upload_mimes', 'add_svg_to_upload_mimes', 10, 1 );

Dar încă încărcarea unui SVG dă următoarea eroare. Eroare la încărcarea SVG

3
Comentarii

Uită-te la extensia fișierului. Încărci un fișier XML, nu un SVG.

Jacob Peattie Jacob Peattie
12 sept. 2018 12:28:09

@JacobPeattie SVG este un format de fișier bazat pe XML și acest tip MIME este corect în multe contexte. Poate te referi la soluția lui Syed și, în cazul WordPress, image/svg fără +xml este într-adevăr răspunsul corect.

JDandChips JDandChips
9 sept. 2020 11:32:56

Dacă ai ajuns aici și poți încărca un SVG în WordPress, dar acesta nu se afișează, verifică lățimea și înălțimea, în cazul meu acestea erau setate implicit la 1x1.

rob rob
8 dec. 2020 19:24:00
Toate răspunsurile la întrebare 6
2
12

@rana-umer codul tău este corect, doar elimină "+xml" după 'image/svg'.

//adaugă SVG la fișierele permise pentru încărcare
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 aug. 2019 11:37:44
Comentarii

eliminarea "+xml" a funcționat, mulțumesc

Pons Pons
23 sept. 2019 11:53:08

Acesta este cel mai bun răspuns pentru cei care doresc să facă fără utilizarea plugin-ului.

akshay saxena akshay saxena
4 iun. 2021 09:00:12
2

Această întrebare m-a făcut să mă scarpin în cap. Da, cum de WordPress nu acceptă acest lucru în mod implicit? Și apoi am aflat.

Ai întrebat cum să încarci SVG în WordPress 4.9.8 (versiunea actuală la momentul scrierii). Menționezi că ai "încercat să încarci după instalarea unor plugin-uri diferite". Nu spui care plugin-uri, nici dacă acestea au legătură cu SVG.

După cum înțeleg situația, cel mai sigur și potrivit răspuns în acest moment este să folosești SVG Safe (un plugin scris special pentru acest scop) de Darrell Doyle. Dacă acest plugin nu funcționează pentru tine, atunci probabil ai un conflict în altă parte și ar trebui să urmezi procedurile obișnuite pentru rezolvarea acestuia. Personal, dacă acest plugin nu ar funcționa pentru mine, aș renunța la ideea de a încărca SVG-uri.

Dacă nu ai făcut-o deja, îți sugerez să citești "SVG Uploads in WordPress - adevărul incomod" de Bjorn Johansen și/sau "Cum să activezi în siguranță suportul pentru SVG în WordPress - în doar 2 clicuri simple" de Brian Jackson. Măcar ar trebui să știi în ce te bagi.

13 sept. 2018 04:07:01
Comentarii

Am încărcat fișierul SVG cu plugin-ul sugerat. A funcționat perfect, așa cum mă așteptam. Și miniatura este vizibilă. Mulțumesc mult pentru sugestie. @Tedinoz

Sarath Sarath
14 sept. 2018 09:15:38

De fapt, există mai multe detalii decât doar acest răspuns - SVG-ul trebuie să fie formatat corect, altfel pur și simplu nu se va încărca, indiferent de ce cod sau plugin folosești: https://kinsta.com/blog/wordpress-svg/#attachment_10218

Abia acum am observat că Darrell Doyle a scris codul de sanitizare pentru SVG-uri, așa că presupun că este integrat în plugin-ul său. Dar pentru cei care doresc să facă acest lucru fără un plugin, este important să înțeleagă procesul de sanitizare și cerințele acestuia.

Tony Djukic Tony Djukic
7 mai 2020 02:45:51
0
//adaugă SVG la fișierele permise pentru încărcare
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

După ce ați adăugat acțiunea upload_mimes, dacă cineva încă întâmpină probleme, atunci adăugați următoarea linie în fișierul wp-config.php

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

Prima funcție verifică versiunea WordPress și adaugă suport pentru versiuni mai vechi de 4.8. A doua funcție înregistrează tipul de fișier mime (SVG), iar ultima funcție repară miniaturile în biblioteca media.

/**
 * Adaugă suport pentru 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 mai 2020 00:28:41
Comentarii

Mulțumesc frumos. Funcționează.. doar elimină acel ".attachment-266x266,", nu are legătură

Sagive Sagive
28 ian. 2022 09:10:39
0

Adaugă aceste hook-uri, am testat pe WordPress 5.3 și funcționează:

// Permite 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 sept. 2020 18:38:11