My Web道

WEB制作科 受講記録 …とその後も続くWEB制作に関する活動・学習記録です。

【WordPress】メディアライブラリが表示されなくなった場合の原因・対処法 (admin-ajax.php 編)

f:id:sntkk3:20170820111257j:plain

メディアライブラリが表示されなくなった場合の原因・対処法 (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エラーを発見、修正します。