WordPressのメディアライブラリに画像が表示されない、挿入出来ない、対処方法

2015年6月15日

自分の覚書を兼ねて投稿。

WordPressを使っていて、メディアライブラリにアップロードした画像が表示されないとか画像が挿入出来ない症状になっていてGoogleさんに散々聞きまくってもプラグインを外してみろの回答ばかりで的を得ておらず困っておりました。
そこでブラウザのWebデバッグ機能で追っかけてみると、admin-ajax.phpを使って画像を表示させている模様。つまりadmin-ajax.phpの動作に何か問題があるのでは無いかという事で調べていた所、やっと発見しました。

開発メモ@uehiさんの記事にまんまの説明がありました。

引用させていただきますと

メディアライブラリの選択ウィンドウの一覧はAjaxで一覧データのJSONを取得しているが、どうも環境によってはこのレスポンスヘッダのContent-Typeが「text/html」になってしまうことが原因で、正しく動作するにはこれが「application/json」である必要がある。

との事でした。Apache2やphp5のアップデートなどによって挙動が変わってしまった時に起こりやすい様でした。

修正を行うには、直接admin-ajax.phpファイルを書き換える必要があります。

書き換え対象ファイル

wp-admin/admin-ajax.php

修正前

[html]
@header( 'Content-Type: text/html; charset=’ . get_option( 'blog_charset’ ) );[/html]

修正後

[html]
if(in_array($_POST['action’], array('query-attachments’, 'send-attachment-to-editor’))){
@header('Content-Type: application/json; charset=’ . get_option('blog_charset’));
}else{
@header( 'Content-Type: text/html; charset=’ . get_option( 'blog_charset’ ) );
}
[/html]

ちなみにOSはDebian Linux 3.2.46-1、Apacheは2.2.22、PHPは5.4.4-14+deb7u9を使用しております。WordPressは、3.9.1です。比較的新しいバージョンでの情報というのが無いので役に立てばいいなー程度です。

PC,WordPress

Posted by ysn