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

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

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

修正前

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

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



コメント

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

  1. ありがとうございました。こちらも同じ状況で困惑しておりましたが、こちらの情報通りに修正したところ見事に復旧しました。アドバイスありがとうございました。

  2. 私も同じ問題で苦戦しておりましたが、無事解決致しました。本当にありがとうございます。

  3. どこも「プラグイン外してみて。」ばかりで、「やってるけど、できない~・・・」
    と困り果てていたところ、ysnさんのサイトへたどり着きました。

    わかりやすい対処法で、すぐに解決できました!
    本当にありがとうございます。

  4. 先ほどコメントしましたが、消してくださいm(_ _)m
    $menu関連を調べてみたら、function.phpに書いていた記述が原因だったみたいです…

    add_action(‘admin_init’, ‘remove_menus’);
    function remove_menus(){
    if(!current_user_can(‘add_users’)){
    remove_menu_page(‘jetpack’);
    }
    }

    失礼しましたm(_ _)m

  5. WordPress 4.1.1 にて同じ現象が発生して、このページを参考にさせていただきました。
    ありがとうございます。

    その後調べてみたところ、
    WordPressをインストールした上位ディレクトリの
    .htaccess に記載してあった
    ——————————
    php_value output_handler mb_output_handler
    ——————————
    をコメントアウトしたところ、画像が表示されることを発見しました。

    このコメントアウトは元に戻して、
    WordPressをインストールしたディレクトリの .htaccess に
    output_handler を上書きするように以下を追記したところ無事解決しました。
    ——————————
    php_value output_handler none
    ——————————

    これで admin-ajax.php を編集しなくても
    メディアライブラリにアップロードした画像が表示され、
    投稿に挿入できるようになりました。

    ちなみに上位ディレクトリに .htaccessが存在しなくても
    サーバーのPHPの設定で
    output_handlerの設定がされている場合があります。

    ご参考まで。

  6. ピンバック: WordPressのメディアライブラリで画像が表示されなくなった | hayashi-rin.net

  7. ピンバック: WordPressで画像挿入できない | カタカタ

  8. ピンバック: メディアライブラリが表示されない!functions.phpの修正

  9. ピンバック: 【画像アップ不具合】メディアライブラリがぐるぐる回って写真が表示されないトラブル | JMAS 株式会社ジェーエムエーシステムズ

  10. ピンバック: 【画像アップ不具合】画像がアップロードできない | JMAS 株式会社ジェーエムエーシステムズ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です