Algumas imagens enviadas para o WordPress não aparecem na Biblioteca de mídia. As imagens são carregadas e até cortadas nos tamanhos definidos; há uma entrada na Biblioteca de mídia, mas a imagem de visualização não é exibida. Posso até usá-los como uma imagem em destaque e eles aparecem corretamente no meu site.
Consegui encontrar a causa do problema: se houver caracteres especiais (como tremados alemães) no campo "Palavras-chave" do IPTC nos JPGs, esse problema ocorre. Assim que eu uso o Exiftool para remover o campo "Palavras-chave" de um JPG que mostra os problemas mencionados, esse arquivo funciona sem problemas. Eu pude verificar esse problema em três instalações do WordPress em dois servidores web completamente diferentes hospedados por empresas diferentes. A versão do Wordpress é 4.4.1
.
Estou inclinado a relatar isso como um bug do WordPress. Mas antes de fazer isso, quero resolver o problema real ainda mais. Eu pude descobrir que, para todas as imagens "ruins", não há _wp_attachment_metadata
entrada na wp_postmeta
tabela.
Se eu invadir o wp-admin/includes/image.php
arquivo e configurá $meta['keywords'] = array();
-lo wp_read_image_metadata()
, tudo funcionará bem. Obviamente, há algum código que usa o resultado wp_read_image_metadata()
para criar uma _wp_attachment_metadata
linha para esse anexo. Mas onde está o código que falha ao inserir _wp_attachment_metadata
se houver um problema com cadeias codificadas incorretamente $meta['keywords']
?
E existe um gancho para substituir esse problema em minhas instalações? Uma instalação do WordPress que mostra que esse problema é usado por vários editores que não têm muita experiência com computadores. Dizer a eles para usar um software em seu PC para remover as tags IPTC defeituosas é inútil. Mas também não quero invadir o arquivo principal mencionado em um sistema ativo.
Atualização: Aqui estão duas imagens idênticas em que uma mostra o problema e a outra não. A única diferença está no campo "keywords", onde um tem o conteúdo "sweet", o outro "süß" (= palavra alemã para sweet).