JOURNAL クリエイティブとマーケティングの話

WordPressメディアライブラリに画像が表示されないときの対処法

WordPressサイトのリニューアル案件があり、現行サイトのデータを開発環境に移植した際にメディアライブラリに一部の画像が表示されないということが起こりました。

FTPなどの方法でアップロードした画像がメディアライブラリに表示されないという現象は以前にもあったので、「Media from FTP」を試してみましたが改善されず。

いろいろいじってみたところ、以下のようなことが分かりました。

  • すべての画像が表示されないわけではなく、古い画像が読み込まれない
  • メディアライブラリをリスト表示に切り替えたら古い画像も表示される

以上のことからajaxが原因ではないかとアタリをつけて調べたところ、WordPress本体にある「admin-ajax.php」というファイルを編集すればよさそうということが分かりました。

WordPress本体に「wp-admin」というフォルダがあるので、その中にある「admin-ajax.php」をダウンロード(※WordPressのバージョンは5.7.1)。

27行目のソースコードを、

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' ) );
}

修正後にメディアライブラリをグリッド表示にしたところ、無事に古い画像も読み込まれるようになりました。

ちなみに僕の場合は復旧後に上記ソースコードを修正前の状態に戻しても問題なく動いたので、WordPress本体をいじるのに抵抗がある人は戻しても大丈夫だと思います(多分)。