【WordPress】メディアライブラリが表示されなくなった場合の原因・対処法 (admin-ajax.php 編)
メディアライブラリが表示されなくなった場合の原因・対処法 (admin-ajax.php 編)
「WordPressのメディアライブラリが突然表示されなくなった」
今日は、そんな場合の原因・対処法について、シェアします。
※この障害の特徴としては、
- メディアライブラリ画面上で、くるくるが表示され、メディアが表示されない。
- リストではメディアが表示されるが、グリッドだと表示されない。
といった感じです。
この現象には、いくつか考えられる原因はあるようなのですが、主な原因としては、以下のようなケースが考えられます。
《想定されるケース》
(1) プラグインによる影響
(2) functions.php に謝った記述(文法エラー)がある
(3) Ajaxの動作不良
実際、私自身の場合、先日こちらの現象が発生した際、
上記(3)の解決により、問題が解消しました。
※上記(1)~(3)以外のケースもあるようですが、ここでは割愛させていただきます。
備忘録を兼ね、以下より admin-ajax.php 修正による対処方法をご紹介いたします。
admin-ajax.php 修正
WordPressのwp-adminフォルダにある、admin-ajax.phpの一部を以下のように修正します。
《修正前》
@header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) );
《修正後》
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' ) ); }
なお、
前述の想定されるケース(1)には、
1. 一旦すべてのプラグインを停止して問題解消するか確認
2. (プラグイン停止により問題が解消した場合)
一つ一つプラグインを有効化して、問題原因となるプラグインを特定、利用プラグインから除外、
といった対応を、
想定されるケース(2)には、
デバッグモードを有効化するなどして、Syntaxエラーを発見、修正します。