ワードプレスの管理画面メニューのラベルテキストを変更する方法
ワードプレスサイトを制作しているとカスタマイズする事も少なくない管理画面サイドメニュー。今回はラベルテキストを変更していきます。
WordPressの管理画面には上部にもメニューバーがありますが、こちらはいわゆるAdimn barというやつで、今回はこちらではなくPC表示時に左サイドに表示されるメニューのカスタマイズ方法です。
※この記事でご紹介する方法は、マルチサイト化している場合は一部利用できません。いわゆる通常のWordpressサイトの場合に使用できます。ご注意下さい。
~ 目次 ~
管理画面メニュー情報の構成
管理画面のメニュー情報は、ワードプレスのグローバル変数「$menu」と「$submenu」に格納されています。これを書き換えれば良いわけですが、今回ご紹介する方法では、admin_menuというアクションフックを利用して書き換えていきます。
まず、どのように格納されているかを確認しましょう。
$menuの構成
この記事の執筆時点の最新バージョン(Ver 6.0)で、デフォルトのメニューは以下の通りです。
- ダッシュボード(2)
- 【セパレーター(4)】
- 投稿(5)
- メディア(10)
- 固定ページ(20)
- コメント(25)
- 【セパレーター2(59)】
- 外観(60)
- プラグイン(65)
- ユーザー(70)
- ツール(75)
- 設定(80)
- 【セパレーター(99)】
カッコ内の数字が「$menu」のキーで、このキーの数値がそのままメニューのポジションになっています。数字の少ない順に上から並ぶわけですね。
$submenuの構成
$submenuの場合は少し構成が違います。対応しているメニューページ名(パラメータも含む)がキーの連想配列になっています。
つまり、親メニューにマウスを当てた時に出るリンク先URLの「wp-admin/」の後の部分です。
ちょっと表現が難しいですが、下のような感じで上書きできるわけです。
1 2 3 4 5 |
/* 「ダッシュボード」のラベルの例 */ $submenu['index.php'][5][0] = '「ホーム」の代わりに使用する新しいラベル'; /* 「固定ページ」のラベルの例 */ $submenu['edit.php?post_type=page'][5][0] = '「固定ページ一覧」の代わりに使用する新しいラベル'; |
という事で、次から実際にフックを使用して書き換えていきます。
メニューのラベルの変更方法
デフォルトの「投稿」を新着情報に使用していたりする場合、メニューのラベルも「お知らせ」だったり「新着情報」としたくなりますよね。あるいは「ダッシュボード」というキーワードに馴染みが無いので変えたい…などなど。
それでは、実際に管理画面メニューのラベルを変更してみましょう。
ラベルテキストは各メニューの配列のキー[0]に格納されていますので、これを書き換えてあげます。
メニュー(親)書き換えのサンプルコード
コードのサンプルは以下のような感じです。基本的に使用中のテーマの functions.phpに追記すれば大丈夫でしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
add_action( 'admin_menu', 'customize_admin_menu_label', 9999 ); function customize_admin_menu_label(){ global $menu; //print_r($menu); $menu[2][0] = 'だっしゅぼーど'; $menu[5][0] = 'とうこう'; $menu[10][0] = 'めでぃあ'; $menu[20][0] = 'こていぺーじ'; $menu[25][0] = 'こめんと'; $menu[60][0] = 'がいかん'; $menu[65][0] = 'ぷらぐいん'; $menu[70][0] = 'ゆーざー'; $menu[75][0] = 'つーる'; $menu[80][0] = 'せってい'; } |
上のコードを追記すると、デフォルトの管理画面メニューがすべて平仮名に変わるはずです。あとはお好きなテキストに書き換えてしまえばOKです。書き換えが不要なメニューの行は削除します。
実際にはプラグインにより追加されたメニューなど、他のメニューがある事が多いと思います。
こういったデフォルトで存在しないメニューのキーがわからない場合は、4行目のコメントアウト( // )を外してみましょう。エラーっぽい画面になってしまいますが、$menuの中身が管理画面に表示されます。一度、配列の中身を確認してみると良いと思います。ブラウザのディベロッパーツールで開くと改行が入って読みやすいですよ。
サブメニューのラベルを変更する方法
次はサブメニューのラベルを変更する方法です。下がサンプルコードです。
サブメニュー書き換えのサンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
add_action( 'admin_menu', 'customize_admin_submenu_label', 9999 ); function customize_admin_submenu_label(){ global $submenu; //print_r($submenu); $submenu['index.php'][0][0] = 'ほーむ'; $submenu['index.php'][10][0] = 'こうしん'; $submenu['edit.php'][5][0] = 'とうこういちらん'; $submenu['edit.php'][10][0] = 'しんきついか'; $submenu['edit.php'][15][0] = 'かてごりー'; $submenu['edit.php'][16][0] = 'たぐ'; $submenu['upload.php'][5][0] = 'らいぶらり'; $submenu['upload.php'][10][0] = 'しんきついか'; $submenu['edit.php?post_type=page'][5][0] = 'こていぺーじいちらん'; $submenu['edit.php?post_type=page'][10][0] = 'しんきついか'; $submenu['themes.php'][5][0] = 'てーま'; $submenu['themes.php'][6][0] = 'えでぃたー'; $submenu['plugins.php'][5][0] = 'いんすとーるずみぷらぐいん'; $submenu['plugins.php'][10][0] = 'しんきついか'; $submenu['users.php'][5][0] = 'ゆーざーいちらん'; $submenu['users.php'][10][0] = 'しんきついか'; $submenu['users.php'][15][0] = 'ぷろふぃーる'; $submenu['tools.php'][5][0] = 'りようかのうなつーる'; $submenu['tools.php'][10][0] = 'いんぽーと'; $submenu['tools.php'][15][0] = 'えくすぽーと'; $submenu['tools.php'][20][0] = 'さいとへるす'; $submenu['tools.php'][25][0] = 'こじんでーたのえくすぽーと'; $submenu['tools.php'][30][0] = 'こじんでーたのしょうきょ'; $submenu['tools.php'][31][0] = 'てーまふぁいるえでぃたー'; $submenu['tools.php'][32][0] = 'ぷらぐいんふぁいるえでぃたー'; $submenu['options-general.php'][10][0] = 'いっぱん'; $submenu['options-general.php'][15][0] = 'とうこうせってい'; $submenu['options-general.php'][20][0] = 'ひょうじせってい'; $submenu['options-general.php'][25][0] = 'でぃすかっしょん'; $submenu['options-general.php'][30][0] = 'めでぃあ'; $submenu['options-general.php'][40][0] = 'ぱーまりんく'; $submenu['options-general.php'][45][0] = 'ぷらいばしー'; } |
将来的にWordpressのバージョンが変わると変更される事もあるかもしれませんが、Ver.6.0時点でのデフォルトのサブメニューは上記のコードですべて平仮名に変更されます。
こちらも、プラグイン関連のメニューなどのデフォルト以外のものについて確認したい場合は、4行目のコメントアウトを外してみましょう。ちょっとしたエラーが一緒に吐き出されますが、$submenuの中身が出力されますので確認する事ができます。
セパレーターの削除・追加
デフォルトで存在するセパレーターを削除したり追加する場合は、次のようにしましょう。
セパレーターの削除
削除の場合は、unsetを使えばOKです。
1 2 3 4 5 6 7 |
add_action( 'admin_menu', 'delete_admin_menu_separetor', 9999 ); function delete_admin_menu_separetor(){ global $menu; unset($menu[4]); unset($menu[59]); unset($menu[99]); } |
セパレーターの追加
こちらは新しいセパレーターを追加する方法。いくつか方法は考えられますが、下のように追加できます。
1 2 3 4 5 6 7 |
add_action( 'admin_menu', 'add_admin_menu_separetor', 9999 ); function add_admin_menu_separetor(){ global $menu; $menu[19] = array( '', 'read', '', '', 'wp-menu-separator' ); $menu[69] = array( '', 'read', '', '', 'wp-menu-separator' ); } |
この場合は「メディア」の下と「外観」の下に、計2つのセパレーターを追加しています。
デフォルトのセパレーターの位置を変更したいという場合も、キーを変更するというのは面倒なので、削除して追加してしまえば良いでしょう。
更新通知などが消えてしまうと困る場合の対処
「ダッシュボード」や「プラグイン」など、メニュー名の後に更新通知の数が表示されますよね。
今回ご紹介しているコードは、こういった通知のHTMLコードごと書き換えてしまいます。つまり書き換える段階で、ラベルテキストの後にspanタグが付いているんですね。そこで、消えてしまうと困る場合は以下のようにして対処しましょう。
1 2 3 4 5 |
add_action( 'admin_menu', 'customize_admin_menu_label', 9999 ); function customize_admin_menu_label(){ global $menu; $menu[2][0] = str_replace( 'ダッシュボード', 'だっしゅぼーど', $menu[2][0] ); } |
もちろん、PHPについて詳しい方なら他の方法で書き換えても問題ありません。
上のサンプルコードは$menuのものですが、$submenuの書き換えでも同様の方法で大丈夫です。
最後に
いかがでしょうか。お好きなラベルテキストに書き換えられましたか?
今回のサンプルコードはすべてpriorityを9999に設定していますが、適当に大きな数字を設定しておくと良いでしょう。設定しないとpriorityはデフォルトで10になりますが、一部のデフォルトメニューはこれより後で追加されているようで、書き換えできないケースがあります。
アイコンの変更方法も一緒に書く予定でしたが、ちょっとボリュームが出てしまったので、こちらはまた今度別の記事にまとめたいと思います。では。