WordPressで管理画面のメニューが表示されないとき
なぜか、自分のWordPressサイトに限って、重要なメニューが表示されないとか、制作を依頼した業者から納品されたサイトのメニューが極端に少ないことがあります。WordPressの入門書で見たメニュー構成と全く異なるため「このサイト、壊れてる?」と不安になるかもしれません。
この記事の内容
メニューが表示されないのは管理者ではないから
考えられる原因は、ログイン中のユーザーが管理者ではないということです。たとえば、編集者や投稿者の場合、「設定」や「外観」メニューは表示されません。
サイトの管理者や制作者から「このユーザー名とパスワードを使ってログインしてください」と指示されたユーザーの種類が編集者や投稿者だと、上記のような極端に少ないメニュー構成になる場合があります。
これは、管理者以外のユーザーでは使用可能な機能が制限されるためです。管理者以外のユーザーが間違って重要な設定を変更しないための安全策に役立ちます。多くのユーザーでサイトを管理するときは特に便利です。
「誰も管理者のパスワードを知らない」になるかも
このようなユーザー権限の使い分けは便利な反面、「誰も管理者のユーザー名やパスワードがわからない」という状態になる場合があります。
たとえば、WordPressサイトの管理を1人で担当していた社員が退職したり、制作を依頼していた業者と連絡がつかなくなってしまったときです。
重要な設定を変更したいと思っても誰も管理者のパスワードがわからず、WordPressの管理画面から重要な作業が何もできないという状態が続いてしまいます。
データベースの中身をのぞいてみれば解決
そのような場合、WordPressデータベースの中身をのぞいてみれば、管理者のユーザー名などを調べることができます。WordPressのユーザー情報はwp_usersというテーブルに保存されています。
パスワードは暗号化されているので元の文字はわかりませんが、変更できるので問題ありません。ただし、パスワードの変更には注意が必要なため、実際に管理者のパスワードを変更する場合は以下のページなどで詳細手順を確認してください。
phpMyAdminでWordPressユーザーのパスワードをリセットする方法
誰が管理者かわからないときは
wp_usersテーブルに多くのユーザーが保存されていて、誰が管理者かわからないときは、wp_usermetaテーブルを見てみましょう。
wp_user_levelフィールドが「10」(権限レベルが10)のユーザーが管理者です。
そのユーザーのID(user_id)をメモしてもう一度wp_usersテーブルをチェックしましょう。この例ではユーザーIDが1のユーザーが管理者なので、「wpmaster」が管理者だとわかります。
管理者でログインしてもメニューが表示されない場合
管理者でログインしても一部のメニューが表示されない場合、特定の条件でメニューが非表示にされているかもしれません。
たとえば「外観メニューを操作できるのは鈴木さんだけにしよう」のような要件がある場合、次のコードを使います。
/* 特定の管理者以外はメニューを非表示に */ function my_admin_menu(){ global $current_user; if($current_user->user_login != 'suzuki'){ remove_menu_page('themes.php'); } } add_action('admin_menu', 'my_admin_menu');
これにより、管理画面から「外観」メニューが消えます。
この例では「$current_user->user_login != 'suzuki'」という条件(ユーザー名が「suzuki」以外は)を設定しているので、鈴木さん以外には「外観」メニューが表示されません。
ただ、非表示というだけで、URL(例:http://…略…/wp-admin/themes.php)を知っていればアクセスはできるので厳密な動作が必要な場合はもう少し工夫が必要です。
要は、管理者でログインしてもメニューが表示されない場合があるということです。
その対策は、上記の制限を解除すればよいでしょう。たとえば、最後の行の「add_action」をコメントにすればメニュー非表示は無効になります。
//add_action('admin_menu', 'my_admin_menu');