Eu tenho um trecho no arquivo PHP de minhas funções que permite fazer upload de arquivos SVG. Desde a atualização para a versão mais recente do WP hoje, não consigo mais carregar svgs. Eu também tentei um segundo trecho de código no site de truques CSS e isso também não funciona.
Alguém sabe a) o que pode ter causado isso com a última atualização eb) Alguém conhece uma solução alternativa.
Aqui está o código que eu normalmente uso:
function svg_mime_types( $mimes ) {
mimes['svg'] = 'image/svg+xml';
return $mimes;}
add_filter( 'upload_mimes', 'svg_mime_types' );
Muito Obrigado
Paulo.
define( 'ALLOW_UNFILTERED_UPLOADS', true );
awp-config.php
. Isso não é seguro para produção.'svg' === strtolower($filetype['ext']);
e introduz mais trabalho no caso nenhum trabalho é necessário (a maioria) ou o arquivo não é do tipo SVG ...Parece que isso pode estar relacionado a este ticket https://core.trac.wordpress.org/ticket/39552 , parece algo que foi quebrado na versão 4.7.1
fonte
Ninguém parece ter trabalhado com o que é e isso é muito ruim, então aqui está como eu lidei com ...
História / Histórico
Criei um uploader SVG em 2015 com base em um artigo CSS-Tricks, analisando o que era. Também tenho a grade trabalhando para a visualização da imagem e usei algumas outras correções. Plug-in simples (plug-ins do tipo arquivo IMO devem ser simples)
Solução
Houve algumas alterações na versão 4.7. O verdadeiro PITA era que, para os
image/
tipos MIME, o WP agora usa GD nas imagens. Para contornar isso, defino asvg
extensão a ser usadaapplication/svg+xml
para que o GD não mexa com o arquivo.Atualização: a partir da versão 4.7.2, alguma faísca brilhante quebrou isso também em alguns casos
Depois, mais tarde, através do gancho, conectamos novamente
image/svg+xml
. É o mesmo usado em outras respostas, mas em primeiro lugar, bloqueamos o nosso caso específico para eliminar efeitos (é um arquivo SVG); podemos confiar na leitura$data['ext']
(deve ser mais barato que a função para obter informações do arquivo, pois apenas uma comparação e um acesso a array / hash).Atualização: a partir da versão 4.7.2
$data['ext']
nem sempre é definida, portanto, se o comprimento for <1, extrair (potencialmente insegura) a extensão do nome do arquivo usandostrtolower(end(explode('.', $filename)))
. A razão pela qual estou realmente lutando com o FileInfo é que depender essencialmente de uma extensão PHP é muito opaco e nem sempre funciona para todos (especialmente para aqueles que estão compilando sem ou sem acesso para habilitar extensões, se não houver). Eu gostaria de algo que funcione, em vez de uma extensão. Não é mais uma questão de ter as informações corretas; portanto, para aqueles que confiam na saídaFileInfo
e na extensão (acredito que seja o padrão no 5.6+), ele deve funcionar. Também porque este é um plugin, não está modificando o núcleo. Você pode desativar esse código ou cancelar o registro do gancho.https://github.com/Lewiscowles1986/WordPressSVGPlugin
Vejo
Outras soluções alternativas
Permitir uploads não filtrados é uma solução horrível, porque, como já foi dito, ao vincular esse tópico, as pessoas podem fazer upload de arquivos php via uploader de mídia (isso é ruim e, se você fizer, deve parar e pensar!)
Forçando todos os arquivos através de qualquer função sem verificações (ironicamente, se você possui
image/
o tipo mime, não pode simplesmente ter uma simples verificação ext). Isso tem o potencial de criar efeitos de alcance muito mais amplo para resolver um problema relativamente de nicho e apresenta mais trabalho geral (ressalte meu plugin também introduz mais trabalho para os usuários administrativos, para que a UI da mídia administrativa funcione)Se deixássemos o mime como application / svg + xml e filtrássemos os tipos de mime, a imagem seria carregada, mas o AFAIK exigiria que as correções fossem usadas como imagem em destaque etc. Há mais trabalho a ser feito para garantir uma experiência SVG universal, então eu escolhi para escolher batalhas com cuidado.
Espero que isto ajude.
fonte