KagoyaサーバとWordPress4.8.1でメディアが表示されない場合の対処法

/ WordPress / Comment[0]

KAGOYAサーバーでPHPバージョンは5.6.3のサーバに設置したWordPress4.8.1においてメディアライブラリが真っ白で読み込み中のマークがぐるぐるしたきりでファイル一覧が表示されないという不具合があった。アイキャッチ画像の設定や削除もできなくなっていた。

同サーバーに構築された古いバージョンのWordPressではメディアライブラリは正常に表示されていた。どうやら4.8.1とKAGOYAサーバの組み合わせが悪かったようだ。

原因

メディアライブラリはajaxによってjsonを引っ張ることで出力している。しかし、特定の環境ではレスポンスヘッダーのContent-Typeがapplication/jsonにならず、text/htmlだとか他のMIMEを出力してしまい、ブラウザはそれを解釈できず真っ白に表示されているようだった。

対処

functions.phpに以下のコードを追記する。

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

POSTのactionにquery-attachmentsとsend-attachment-to-editorとget-post-thumbnail-htmlがあった場合に、強制的に「Content-Type: application/json」を指定するようになる。

ネットに転がっている情報の大半がwp-admin/admin-ajax.phpを編集する方法だが、この方法ではアップデートが入った際に書き換わってしまい、結果的に会社にかかる電話が増えることになるためオススメしない。

関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可