Một số hình ảnh được tải lên WordPress không hiển thị trong Thư viện phương tiện. Các hình ảnh được tải lên và thậm chí được cắt theo kích thước đã xác định, có một mục trong Thư viện phương tiện, nhưng hình ảnh xem trước không hiển thị. Tôi thậm chí có thể sử dụng chúng như một hình ảnh đặc trưng và chúng hiển thị chính xác trên trang web của tôi.
Tôi đã có thể tìm ra nguyên nhân của vấn đề: Nếu có các ký tự đặc biệt (như tiếng Đức) trong trường "Từ khóa" IPTC trong JPG, thì sự cố này xảy ra. Ngay khi tôi sử dụng Exiftool để xóa trường "Từ khóa" khỏi JPG hiển thị các sự cố đã đề cập, tệp này hoạt động mà không gặp sự cố nào. Tôi có thể xác minh sự cố này trên ba cài đặt WordPress trên hai máy chủ web hoàn toàn khác nhau được lưu trữ bởi các công ty khác nhau. Phiên bản Wordpress là 4.4.1
.
Tôi có xu hướng báo cáo đây là một lỗi WordPress. Nhưng trước khi làm như vậy, tôi muốn tìm hiểu thêm về vấn đề thực sự. Tôi có thể thấy rằng đối với tất cả các hình ảnh "xấu", không có _wp_attachment_metadata
mục nào trong wp_postmeta
bảng.
Nếu tôi hack wp-admin/includes/image.php
tập tin và thiết lập $meta['keywords'] = array();
trong wp_read_image_metadata()
, mọi thứ đều hoạt động tốt. Rõ ràng có một số mã sử dụng kết quả từ đó wp_read_image_metadata()
để tạo một _wp_attachment_metadata
hàng cho tệp đính kèm đó. Nhưng mã đó không được chèn vào đâu _wp_attachment_metadata
nếu có vấn đề với các chuỗi được mã hóa sai $meta['keywords']
?
Và có một cái móc để ghi đè vấn đề đó trong cài đặt của tôi không? Một cài đặt WordPress cho thấy vấn đề đó được sử dụng bởi một số biên tập viên cực kỳ khó hiểu về máy tính. Việc bảo họ sử dụng một phần mềm trên PC để loại bỏ các thẻ IPTC bị lỗi là điều không nên. Nhưng tôi cũng không muốn hack tập tin cốt lõi được đề cập trên một hệ thống trực tiếp.
Cập nhật: Đây là hai hình ảnh giống hệt nhau trong đó một hình ảnh cho thấy vấn đề, hình ảnh kia thì không. Sự khác biệt duy nhất là trong lĩnh vực "từ khóa", trong đó một từ có nội dung "ngọt", một từ khác "süß" (= từ tiếng Đức có nghĩa là ngọt ngào).