Algunas imágenes que se cargan en WordPress no se muestran en la Biblioteca multimedia. Las imágenes se cargan e incluso se recortan a los tamaños definidos, hay una entrada en la Biblioteca de medios, pero la imagen de vista previa no se muestra. Incluso puedo usarlos como imagen destacada y se muestran correctamente en mi sitio web.
Pude encontrar la causa del problema: si hay caracteres especiales (como diéresis alemanas) en el campo "Palabras clave" de IPTC en los JPG, entonces se produce este problema. Tan pronto como use Exiftool para eliminar el campo "Palabras clave" de un JPG que muestra los problemas mencionados, este archivo funciona sin ningún problema. Pude verificar este problema en tres instalaciones de WordPress en dos servidores web completamente diferentes alojados por diferentes compañías. La versión de Wordpress es 4.4.1
.
Me inclino a reportar esto como un error de WordPress. Pero antes de hacerlo, quiero precisar más el problema real. Podría encontrar que para todas las imágenes "malas", no hay _wp_attachment_metadata
entrada en la wp_postmeta
tabla.
Si hackear el wp-admin/includes/image.php
archivo y conjunto $meta['keywords'] = array();
de wp_read_image_metadata()
, todo funciona bien. Obviamente, en algún lugar hay algún código que usa el resultado wp_read_image_metadata()
para crear una _wp_attachment_metadata
fila para ese archivo adjunto. Pero, ¿dónde está ese código que no se inserta _wp_attachment_metadata
si hay un problema con cadenas codificadas incorrectamente $meta['keywords']
?
¿Y hay un gancho para anular ese problema en mis instalaciones? Una instalación de WordPress que muestra ese problema es utilizada por varios editores que no saben mucho de computadoras. Decirles que usen un software en su PC para eliminar las etiquetas IPTC defectuosas es imposible. Pero tampoco quiero hackear el archivo central mencionado en un sistema en vivo.
Actualización: Aquí hay dos imágenes idénticas donde una muestra el problema y la otra no. La única diferencia está en el campo "palabras clave", donde uno tiene el contenido "dulce", el otro "süß" (= palabra alemana para dulce).