web-dev-qa-db-ja.com

IPTCキーワードに特殊文字が含まれていると、アップロードされた画像がMedia Libraryに表示されません。

WordPressにアップロードされた画像の中にはメディアライブラリに表示されないものがあります。画像がアップロードされ、定義されたサイズにトリミングされても、メディアライブラリにエントリがありますが、プレビュー画像は表示されません。私はそれらを特色にした画像として使うことさえでき、そしてそれらは私のウェブサイトに正しく表示されます。

私は問題の原因を見つけることができました:JPGのIPTCの「キーワード」フィールドに特殊文字(ドイツ語のウムラウトのような)があるなら、この問題は起こります。 Exiftool を使用して、前述の問題を示すJPGから "Keywords"フィールドを削除するとすぐに、このファイルは問題なく動作します。私はこの問題を、異なる会社がホストしている2つのまったく異なるWebサーバーにインストールした3つのWordPressで検証できました。 Wordpressのバージョンは4.4.1です。

私はこれをWordPressのバグとして報告するつもりです。しかし、そうする前に、私は本当の問題をさらに突き止めたいと思います。すべての「悪い」画像について、_wp_attachment_metadataテーブルにwp_postmetaエントリーがないことがわかりました。

wp-admin/includes/image.phpファイルをハックして$meta['keywords'] = array();wp_read_image_metadata()を設定すれば、すべてうまくいきます。その添付ファイルの_wp_attachment_metadata行を作成するためにwp_read_image_metadata()の結果を使用するコードがどこかにあるのは明らかです。しかし、_wp_attachment_metadataの文字列が正しくエンコードされていない場合、$meta['keywords']を挿入できないコードはどこにありますか?

そして私のインストールでその問題を無効にするためのフックはありますか? WordPressを1つインストールすると、この問題は、コンピュータに非常に精通していない複数の編集者によって使用されることがわかります。誤ったIPTCタグを削除するために自分のPC上のソフトウェアを使用するように彼らに指示するのは無駄です。しかし、私はまた、ライブシステム上で言及されているコアファイルをハックしたくありません。

更新: これは一方が問題を示しているが他方がそうではない2つの同一の画像です。唯一の違いは、フィールドが "sweet"、もう1つが "süß"(=ドイツ語for sweet)という内容です。

image that does not work working image 

8
z80crew

私はこれをPhotoshopで自分自身で作成した画像でテストしました。そこでは考えうるすべてのIPTC分野にWord "Süss"を挿入しました。

画像処理プラグインがインストールされていないWordPress 4.6にアップロードしました。アップロードはスムーズに進み、正しいサムネイルはuploadsディレクトリに作成され、captionフィールドは対応するIPTCフィールドから正しくロードされました。

また、サムネイルはメディアライブラリで正しく表示されていました。

だから、私はこれが 実際にはバグである と言っている傾向があります。

2
cjbj

この問題は、ファイル名に特殊文字(私の場合は "â")を使用した場合にも発生しているようです。それは少なくとも私には起こりました、そして私はexif情報を決して編集しなかったのでそれはIPTC分野に関連しているだけではありません。アクセントを削除して、filenameを編集した後も期待通りに動作するようになりました。

最も奇妙なのは、エンコーディングの問題が頻繁に発生することを知っているので、特殊文字は受け入れられない、またはワードプレスライブラリのファイル名には避けるべきであるという投稿や文書はありません...またはそれに取り組むようにワードプレスに依頼してください。クリーンな名前を強制するための特別な機能があり、それ以上の問題が発生するリスクがないと判断された場合、少なくともアップロードに失敗する可能性があります。

これが誰かに役立つことを願っています。文字エンコーディングは、コンピュータサイエンスにおいて常にそのような混乱を招いてきました。

0
Omniarchos