[WordPress] メディアライブラリ(グリッドモード)が表示されない・アップロードが失敗する 問題の対処

ググると質問が結構出てくるけど、解決方法はどの質問にも書かれていない🤔

Grid Mode Doesn’t Load Files – Infinite Loading

このTrackにある質問が唯一サムネイル再生成で解決したケース。

主な症状は、

  • メディアライブラリのリストビューは動作する
  • 画像アップロードが処理中…で止まるがアップロード自体は成功する
  • テーマの表示に問題はない
  • プラグインオフでは直らない
  • テーマを切り替えると発生しない

です。
で、さっき偶然、問題の再現ができたのでメモ。

問題を引き起こすソースコード

add_action( 'admin_init', function () {
  wp_print_scripts( array( 'jquery' ) );
});

アクションフックadmin_initwp_print_scripts を使用する。これだけ。
wp_enqueue_mediaなど、wp_enqueue系スクリプトがセットになっている場合もあるかも。

特定方法

  1. 問題が発生するテーマ内で wp_print_scriptswp_enqueue_ を検索
  2. ヒットしたらそれを呼び出している関数が admin_init フックで実行されていないか確認する

修正方法

admin_init ではなく admin_print_scripts フックに変更する。

管理画面に設定ページを追加している場合は、add_menu_page が戻り値でフック名を返すので、admin_print_scripts に追加して利用する。

$page_hook_suffix = add_menu_page('設定は省略');
add_action( "admin_print_scripts-{$page_hook_suffix}", function () {
  wp_print_scripts( array( 'jquery' ) );
});

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください