WordPress 3分間フッキングシリーズについて
こんにちは!埼玉県川越市を拠点にWordPressの開発やカスタマイズを行っている私たちが、「WordPress 3分間フッキング」シリーズをお届けします。
料理番組「3分間クッキング」のように、WordPressの「フック」を使った実用的なカスタマイズ方法を、3分程度で理解・実装できるように解説していきます!
WordPressの真髄はフック(アクション・フィルター)にあります。functions.phpにたった数行追加するだけで、プラグインをインストールせずに様々なカスタマイズが可能です。
今回のテーマ:管理バーをスッキリさせる
ログインすると画面上部に表示される「管理バー」(Admin Bar)。サイト名や更新通知などが表示されていますが、「使わない項目が多い」「クライアントにとって余計な情報が表示されている」と感じたことはありませんか?
今回は「admin_bar_menu」フックを使って、この管理バーから不要なメニュー項目を削除し、すっきりとした使いやすい管理画面を実現する方法をご紹介します。
管理バー項目削除のフックコード
まずは、今回使用するコードを見てみましょう。
1 2 3 4 5 6 7 |
add_action('admin_bar_menu', 'wp3min_remove_admin_bar_items', 100); function wp3min_remove_admin_bar_items($wp_admin_bar) { $wp_admin_bar->remove_menu('wp-logo'); // WordPress ロゴ $wp_admin_bar->remove_menu('updates'); // 更新通知 $wp_admin_bar->remove_menu('comments'); // コメント数 // 他にもスラッグを指定して削除可能 } |
このコードを functions.php に追加するだけで、管理バーから「WordPress ロゴ」「更新通知」「コメント数」の3つの項目を削除できます。シンプルですね!
フックコードの詳細解説
このコードがどのように動作するのか、詳しく解説していきます。
1. admin_bar_menuフックへの登録
1 |
add_action('admin_bar_menu', 'wp3min_remove_admin_bar_items', 100); |
まず、「admin_bar_menu」というアクションフックに「wp3min_remove_admin_bar_items」関数を登録しています。
パラメータの「100」は優先度を表しています。WordPress内部では優先度の低い(数値の小さい)処理から順に実行され、管理バー項目の追加は優先度10〜90程度で行われることが多いです。
優先度を「100」と高く設定することで、他の処理で追加された管理バー項目も含めて、確実に削除することができます。
2. コールバック関数の定義
1 2 3 |
function wp3min_remove_admin_bar_items($wp_admin_bar) { // 削除処理 } |
「admin_bar_menu」フックから呼び出されるコールバック関数には、「$wp_admin_bar」というパラメータが自動的に渡されます。これは「WP_Admin_Bar」クラスのインスタンスで、管理バーを操作するためのメソッドを持っています。
3. 項目の削除処理
1 2 3 |
$wp_admin_bar->remove_menu('wp-logo'); // WordPress ロゴ $wp_admin_bar->remove_menu('updates'); // 更新通知 $wp_admin_bar->remove_menu('comments'); // コメント数 |
「remove_menu()」メソッドを使って、管理バーから項目を削除しています。引数には、削除したい項目の「ID」(スラッグ)を指定します。
コード内のコメントにあるように、削除対象は「WordPressロゴ」「更新通知」「コメント数」の3つです。
主な管理バーアイテムIDの一覧
管理バーには様々な項目がありますが、よく使われる主な項目のIDをまとめました。
アイテムID | 説明 | 表示位置 |
---|---|---|
‘wp-logo’ | WordPressロゴメニュー | 左端 |
‘site-name’ | サイト名 | 左側 |
‘updates’ | 更新通知 | 中央右 |
‘comments’ | コメント数 | 中央右 |
‘new-content’ | 「新規」メニュー | 中央右 |
‘my-account’ | アカウントメニュー | 右端 |
‘search’ | 検索ボックス | 右端近く |
これらのIDを「remove_menu()」メソッドに渡すことで、対応する項目を管理バーから削除できます。サイトの用途に合わせて必要なものだけを残すと良いでしょう。
実装手順
それでは、実際にコードを実装してみましょう!
- WordPressの管理画面にログインします
- 「外観」→「テーマエディター」を開きます
- 子テーマを使用している場合は、子テーマを選択してください
- テーマエディターが無効化されている場合は、FTPやファイルマネージャーを使用して編集してください
- 右側のファイル一覧から「functions.php」を選択します
- ファイルの末尾(PHPの終了タグ「?>」がある場合はその前)に、上記のコードを追加します
- 「ファイルを更新」ボタンをクリックして保存します
- ページをリロードして、管理バーが変更されたことを確認します
テーマファイルを直接編集する場合は、誤ったコードを入力するとサイトにアクセスできなくなる可能性があります。事前にサイトのバックアップを取っておくことをお勧めします。
カスタマイズの応用例
管理バーのカスタマイズは、項目を削除するだけではありません。様々な応用が可能です。
1. カスタムリンクの追加
1 2 3 4 5 6 7 8 9 10 11 |
add_action('admin_bar_menu', 'wp3min_add_custom_link', 100); function wp3min_add_custom_link($wp_admin_bar) { $wp_admin_bar->add_node(array( 'id' => 'custom-link', 'title' => 'サポートサイト', 'href' => 'https://example.com/support/', 'meta' => array( 'target' => '_blank', ), )); } |
このコードを使えば、管理バーに「サポートサイト」というカスタムリンクを追加できます。クライアントサイトにマニュアルやサポートページへの簡単なアクセス手段を提供するのに最適です。
2. ユーザーロールに応じた表示制御
1 2 3 4 5 6 7 8 9 10 11 12 |
add_action('admin_bar_menu', 'wp3min_role_based_admin_bar', 100); function wp3min_role_based_admin_bar($wp_admin_bar) { // 管理者以外はWordPressロゴを非表示 if (!current_user_can('administrator')) { $wp_admin_bar->remove_menu('wp-logo'); } // 編集者以下のユーザーは更新通知を非表示 if (!current_user_can('editor') && !current_user_can('administrator')) { $wp_admin_bar->remove_menu('updates'); } } |
「current_user_can()」関数を使うと、ユーザーのロールや権限に応じて表示するアイテムを変更できます。例えば、管理者だけに特定の操作へのアクセスを与えることで、一般編集者による誤操作を防ぎます。
3. サブメニュー付きアイテムの追加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
add_action('admin_bar_menu', 'wp3min_add_submenu', 100); function wp3min_add_submenu($wp_admin_bar) { // 親メニュー $wp_admin_bar->add_node(array( 'id' => 'manual-menu', 'title' => '運用マニュアル', )); // 子メニュー $wp_admin_bar->add_node(array( 'id' => 'post-manual', 'parent' => 'manual-menu', 'title' => '記事の投稿方法', 'href' => 'https://example.com/manual/post/' )); // 子メニュー2 $wp_admin_bar->add_node(array( 'id' => 'media-manual', 'parent' => 'manual-menu', 'title' => '画像のアップロード', 'href' => 'https://example.com/manual/media/' )); } |

「parent」キーを指定することで、ドロップダウン形式のサブメニューを作成できます。複数の関連リンクをまとめて整理するのに便利です。
条件に応じたカスタマイズ
より高度なカスタマイズとして、特定の条件下でのみ実行される管理バーの変更も可能です。
1. フロントエンドとバックエンドで分ける
1 2 3 4 5 6 7 8 9 10 11 12 13 |
add_action('admin_bar_menu', 'wp3min_context_admin_bar', 100); function wp3min_context_admin_bar($wp_admin_bar) { // 管理画面でのみ適用 if (is_admin()) { $wp_admin_bar->remove_menu('wp-logo'); } // フロントエンドでのみ適用 if (!is_admin()) { $wp_admin_bar->remove_menu('comments'); $wp_admin_bar->remove_menu('new-content'); } } |
「is_admin()」関数を使って、管理画面とフロントエンド(サイト表示時)で異なるカスタマイズを適用できます。
2. 特定のページタイプでのカスタマイズ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
add_action('admin_bar_menu', 'wp3min_page_specific_admin_bar', 100); function wp3min_page_specific_admin_bar($wp_admin_bar) { // 投稿編集画面では更新通知を非表示 global $pagenow; if ($pagenow == 'post.php' || $pagenow == 'post-new.php') { $wp_admin_bar->remove_menu('updates'); } // 特定の投稿タイプの編集画面での条件分岐 if (isset($_GET['post_type']) && $_GET['post_type'] == 'product') { $wp_admin_bar->add_node(array( 'id' => 'product-manual', 'title' => '商品登録マニュアル', 'href' => 'https://example.com/product-manual/' )); } } |
グローバル変数「$pagenow」や「$_GET」パラメータを使って、特定のページでのみ管理バーをカスタマイズできます。ユーザーの現在のコンテキストに合わせた情報を提供するのに役立ちます。
管理バーを完全に非表示にする方法
特定のユーザーや特定の状況で、管理バーそのものを完全に非表示にしたい場合もあるでしょう。
1 2 |
// 管理バーを完全に非表示にする add_filter('show_admin_bar', '__return_false'); |
管理バーを完全に非表示にすると、管理画面へのアクセスが不便になり、特に初心者ユーザーが混乱する可能性があります。必要性をよく検討した上で実装しましょう。
条件付きで非表示にする場合は以下のようなコードが使えます:
1 2 3 4 5 6 7 8 9 10 |
add_filter('show_admin_bar', 'wp3min_conditional_admin_bar'); function wp3min_conditional_admin_bar($show) { // 管理者以外は管理バーを表示しない if (!current_user_can('administrator')) { return false; } // デフォルトの設定を維持 return $show; } |
まとめ
「admin_bar_menu」フックを使うことで、WordPressの管理バーを簡単にカスタマイズできることがお分かりいただけたでしょうか。
このカスタマイズの最大の魅力は、プラグインを使わずにサイトの管理体験を向上できる点です。特にクライアントワークでは、必要な機能だけを厳選して提供することで、運用の効率化につながります。
今回のポイントをおさらいしましょう:
- 「admin_bar_menu」フックと「remove_menu()」メソッドで不要な項目を削除できる
- 「add_node()」メソッドで新しい項目やサブメニューを追加できる
- ユーザーロールや表示ページに応じて動的に内容を変更できる
- プラグインを使わないため、サイト速度への影響が最小限
私たちは埼玉県川越市で、このようなWordPressサイトの細かなカスタマイズや使い勝手の向上を日々サポートしています。小さなコードの積み重ねが、サイトの使いやすさと運用効率を大きく変えるのです。
よくある質問
Q: フックで削除した項目は再表示できますか?
A: はい、フックで非表示にした項目はコードを削除するか、条件分岐で制御することで再表示できます。削除はあくまでUIレベルのものなので、機能自体が無効化されるわけではありません。
Q: 管理バーのスタイルをカスタマイズできますか?
A: はい、CSSを使って管理バーの色や形をカスタマイズできます。以下のようなコードをテーマのスタイルシートやカスタムCSSプラグインに追加してください:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/* 管理バーの背景色を変更 */ #wpadminbar { background: #2c3e50 !important; } /* 管理バー内のリンク色を変更 */ #wpadminbar a { color: #ecf0f1 !important; } /* ホバー時の背景色を変更 */ #wpadminbar li:hover { background-color: #34495e !important; } |
Q: プラグインで追加された管理バー項目も削除できますか?
A: はい、プラグインで追加された項目も同様に削除できます。項目のIDを調べるには、ブラウザの検証ツール(F12キー)で管理バーの要素を調査するか、プラグインのコードを確認する必要があります。
WordPressのカスタマイズでお悩みがある場合は、ぜひWordPressカスタマイズ・プラグイン開発サービスをご利用ください。また、一人でのサイト運用に不安がある方には、WordPress保守サポートサービスがおすすめです。
次回の「WordPress 3分間フッキング」もどうぞお楽しみに!