WordPressの管理画面には、多くのメニューや機能が標準で並んでいます。制作者にとっては便利でも、サイトを納品するクライアントにとっては、「どこを触ればいいか分からない」「うっかり設定を変えてしまった」というトラブルの元になりがちです。
そこで、納品前に管理画面を、クライアント向けに整理する作業が有効です。この記事では、不要なメニューや項目の非表示、権限別の出し分け、ダッシュボードの整理を、コードで実現する方法をまとめます。
なぜ管理画面を整理するのか
管理画面を整理する目的は、見た目をすっきりさせることだけではありません。
- 誤操作の防止:テーマやプラグインの設定、パーマリンクの変更など、サイトが壊れる操作を防ぐ。
- 運用の負担軽減:更新に必要な項目だけを残し、迷わず作業できるようにする。
- サポートの削減:「この項目は何ですか」という問い合わせを減らす。
- セキュリティ向上:権限のないユーザーに、不要な機能を見せない。
ただし、メニューを非表示にしても、URLを直接開けばアクセスできてしまう点に注意が必要です。本当に使わせたくない機能は、「権限」の制御もあわせて行います。この違いは、後ほど詳しく説明します。
前提:コードを書く場所
以下のコードは、テーマのfunctions.phpではなく、wp-content/mu-plugins/ に置いたファイルに書くことをおすすめします。管理画面の制限は、テーマを変更しても維持したい処理だからです。また、管理者(自分)が作業できなくならないよう、制限の対象を「管理者以外」に絞るのが基本です。
メニューを非表示にする
左側のメニューを消すには、remove_menu_page() を使います。
add_action( 'admin_menu', function () {
// 管理者以外の場合のみ実行
if ( current_user_can( 'administrator' ) ) {
return;
}
remove_menu_page( 'edit-comments.php' ); // コメント
remove_menu_page( 'tools.php' ); // ツール
remove_menu_page( 'themes.php' ); // 外観
remove_menu_page( 'plugins.php' ); // プラグイン
}, 999 );
第1引数は、メニューのスラッグです。調べるには、管理画面で該当メニューを開き、URLの wp-admin/ 以降の部分を確認します。たとえば、設定メニューは options-general.php です。
サブメニューを消す
メニューの中の一部だけを消したい場合は、remove_submenu_page() を使います。
add_action( 'admin_menu', function () {
if ( current_user_can( 'administrator' ) ) {
return;
}
// 設定メニューの「パーマリンク」を消す
remove_submenu_page( 'options-general.php', 'options-permalink.php' );
// 投稿メニューの「タグ」を消す
remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=post_tag' );
}, 999 );
フックの優先度を 999 のように大きくするのは、プラグインがメニューを追加したあとで削除するためです。優先度が低いと、後から追加されたメニューが消えません。
メニューを消しただけでは不十分な理由
先ほど触れたとおり、メニューを非表示にしても、URLを直接入力すればアクセスできます。たとえば、「外観」のメニューを消しても、wp-admin/themes.php を開けば、テーマの管理画面が表示されます。
操作させたくない画面は、アクセス自体を制限します。
add_action( 'admin_init', function () {
if ( current_user_can( 'administrator' ) ) {
return;
}
global $pagenow;
$deny = array( 'themes.php', 'plugins.php', 'tools.php' );
if ( in_array( $pagenow, $deny, true ) ) {
wp_safe_redirect( admin_url() );
exit;
}
} );
これで、該当ページにアクセスすると、ダッシュボードに戻されます。ただし、完全な制御をするなら、ユーザー権限(ロール)そのものを調整する方法のほうが確実です。次の項で説明します。
権限(ロール)を調整する
WordPressには、管理者・編集者・投稿者・寄稿者・購読者というロールがあります。クライアントには、管理者ではなく編集者の権限を渡すだけで、プラグインやテーマの操作は、最初からできなくなります。
編集者でも不足する権限(例:メニューの編集)を追加したい場合は、add_cap() で権限を加えます。
add_action( 'init', function () {
$role = get_role( 'editor' );
if ( $role ) {
$role->add_cap( 'edit_theme_options' ); // メニュー・ウィジェットの編集を許可
}
} );
ただし、edit_theme_options を与えると、テーマのカスタマイザーや、ブロックテーマのサイトエディターなども使えるようになります。権限は、必要最小限だけ追加してください。また、add_cap()の結果はデータベースに保存されるため、毎回実行する必要はありません。確認が済んだら、コードを削除してもかまいません。
クライアント専用のロールを新しく作る方法もあります。運用ルールが複雑な場合は、専用ロールを作ると、管理しやすくなります。
ダッシュボードを整理する
ログイン後に最初に表示されるダッシュボードには、「WordPressイベントとニュース」「クイックドラフト」などのウィジェットが並びます。クライアントには不要なことが多いため、非表示にします。
add_action( 'wp_dashboard_setup', function () {
remove_meta_box( 'dashboard_primary', 'dashboard', 'side' ); // イベントとニュース
remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' ); // クイックドラフト
remove_meta_box( 'dashboard_site_health', 'dashboard', 'normal' ); // サイトヘルス
remove_meta_box( 'dashboard_activity', 'dashboard', 'normal' ); // アクティビティ
remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' ); // 概要
} );
代わりに、サイト運営者への案内を表示するウィジェットを追加すると、親切です。更新の手順、問い合わせ先、マニュアルへのリンクなどを載せましょう。
add_action( 'wp_dashboard_setup', function () {
wp_add_dashboard_widget( 'client_guide', '更新のご案内', function () {
echo '<p>記事の更新方法は、マニュアルをご覧ください。</p>';
echo '<p>お困りの際は、制作担当までご連絡ください。</p>';
} );
} );
管理バーと投稿画面を整理する
管理バー(上部のバー)の項目を消す
add_action( 'admin_bar_menu', function ( $wp_admin_bar ) {
$wp_admin_bar->remove_node( 'wp-logo' ); // WordPressのロゴ
$wp_admin_bar->remove_node( 'comments' ); // コメント
$wp_admin_bar->remove_node( 'new-content' ); // 新規追加
}, 999 );
投稿編集画面の不要な項目を消す(クラシックエディター向け)
次のコードは、クラシックエディターのメタボックスを消すものです。ブロックエディターでは、ディスカッションやスラッグ(URL)が専用のサイドバーパネルになっているため、メタボックスの削除では消えないことがあります。ブロックエディターの場合は、実際の編集画面で効果を確認してください。
add_action( 'add_meta_boxes', function () {
remove_meta_box( 'commentstatusdiv', 'post', 'normal' ); // ディスカッション
remove_meta_box( 'slugdiv', 'post', 'normal' ); // スラッグ
remove_meta_box( 'trackbacksdiv', 'post', 'normal' ); // トラックバック
}, 99 );
スラッグは、SEOに関わる大切な項目です。非表示にするかどうかは、運用方針に合わせて決めてください。
フッターのWordPressの案内を消す
add_filter( 'admin_footer_text', '__return_empty_string' );
add_filter( 'update_footer', '__return_empty_string', 11 );
管理画面下部の「WordPressのご利用ありがとうございます」と、バージョン表示が消えます。
更新通知を、管理者だけに出す
WordPress本体の更新通知(「WordPress X.X が利用可能です!」のバナー)は、編集者などにも表示されることがありますが、本人は何もできず、不安を与えるだけです。管理者以外には非表示にします。
add_action( 'admin_head', function () {
if ( ! current_user_can( 'update_core' ) ) {
remove_action( 'admin_notices', 'update_nag', 3 );
}
} );
プラグインを使う方法との比較
コードを書かなくても、「Adminimize」のようなプラグインで、同様の制限ができます。プラグインとコードの特徴を比較します。
| 項目 | プラグイン | コード |
|---|---|---|
| 導入のしやすさ | 画面で設定でき、簡単 | PHPの知識が必要 |
| 細かい制御 | 用意された範囲内 | 自由に制御できる |
| 設定の再現 | サイトごとに手作業 | ファイルをコピーすれば再現できる |
| 保守 | 更新・互換性の確認が必要 | テーマや本体の更新に影響されにくい |
複数のサイトを同じ設定で納品するなら、コードのほうが再利用しやすく、安定します。1サイトだけで手早く済ませたい場合は、プラグインでも十分です。
注意点
- 制限をかけたあとは、クライアントと同じ権限のテストユーザーでログインして、必要な操作ができるか確認する。
- 管理者を制限の対象から外す条件を、必ず入れる(自分が作業できなくなる事故を防ぐため)。
- プラグインが追加するメニューは、導入や更新で変わる。更新後に、再度確認する。
- 非表示の対象は、あとから復活できるよう、コード内にコメントで一覧を残しておく。
- ダッシュボードや管理バーのコード例は、管理者も含めて非表示にします。管理者を除外したい場合は、各処理の冒頭に
if ( current_user_can( 'administrator' ) ) { return; }を追加してください。
まとめ
管理画面の整理は、クライアントが安心して運用できる環境づくりの仕上げです。
- メニューは remove_menu_page、サブメニューは remove_submenu_page で非表示にする
- 非表示だけでは、直接URLでアクセスされるため、権限またはリダイレクトで制限する
- ダッシュボードのウィジェットは整理し、案内用のウィジェットを追加する
- 制限は、管理者以外に絞り、テストユーザーで動作確認する
納品のたびに同じ設定をするなら、mu-pluginとしてひな形を用意しておくと、作業時間を大きく減らせます。

コメント