本日「WordPressのメディアライブラリに画像が表示されない」とご相談を受け、調査を行いました。
症状の内容としては以下のとおり。
最初はGoogleで「メディアライブラリ 表示されない」と検索してみたたところ、Contact Form 7とTable Pressの組み合わせがダメとか、Chromeのデベロッパーツールで見るとadmin-ajax.phpのエラーが出ている等の報告はチラホラと有るのですが、どちらも違うようで…
他にもfunctions.phpの改行をなくしましょうとか、プラグインをオフにしましょうとか。
でも結局解決せず…
問題が出るのは編集者アカウントのみで、管理者では問題がないことからユーザー権限関係だろうと推測し、User Roll EditorやAdminimizeをオフにしてみましたが原因がわからず、最終的にfunctions.phpにたどり着きました。
で、やっと原因がわかりました。ブログ記事を投稿した際に、twitterやfacebookに自動投稿できるよう、Jetpackプラグインをインストールしていて、パブリサイズ共有を有効にしていたのですが、Jetpackの設定画面を見せたくないため、サイドメニューから消していました。
これがAdminimizeでは設定できなかったため、functions.phpで以下のように記述していました。
1 2 3 4 5 6 |
add_action('admin_init', 'jetpack_remove_menus'); function jetpack_remove_menus(){ if(!current_user_can('add_users')){ remove_menu_page('jetpack'); } } |
ためしにこの記述を外してみると、メディアライブラリが読み込まれるようになりました。
ただ、そのままでは編集者でもJetpackがメニューに出てきてしまいますので、以下の様に変更します
1 2 3 4 5 6 |
add_action('admin_menu', 'jetpack_remove_menus',999); function jetpack_remove_menus(){ if(!current_user_can('add_users')){ remove_menu_page('jetpack'); } } |
変更になったのは1行目です。admin_initにフックしていたのを、admin_menuに変更します。このままだと優先順位の問題でメニューからjetpackが消えてくれなかったので、999とつけて、一番最後に実行されるように設定します。
これで、jetpackをメニューから消しつつ、メディアライブラリも表示させることが出来るようになりました。
参考:https://wordpress.org/support/topic/jetpack-for-super-admins-only
最近のWordPressはアップデートすると不具合が起きることが本当に増えてきましたね。
しっかりバックアップをとってトラブルがあっても戻せるように準備をしておくことが重要ですね。