Nullyのぶろぐ

仙台で働くエンジニアの日記

カスタムメニューの対応個数を増やす

WordPress3になってからは本当にたくさんの機能が提供されました。

その中でも今回はカスタムメニューをご紹介。

鮮度なんて気にしない!

カスタムメニューって?

その名の通り、メニューをオリジナルにカスタマイズ出来る機能です。

具体的には、メニューを自分の好きな通りに組み替えることが出来ます。

まじで!

まじです。

どうやるか

まずは、テーマでカスタムメニューをサポートする必要があります。

なので、functions.phpに以下の記述を行ないます。

add_theme_support("nav-menus");

これでテーマでカスタムメニューをサポートすることが出来ます。

サポートしたら

実際に管理画面にアクセスすると以下のようになってると思います。

まだメニューを追加出来る状態じゃない(メニューが作成されてない)ので、「メニューの名前」に適当に入力し、「メニューを作成」を押しメニューを作成します。

メニューを作成するとこんな感じになります。

で、作った後はゴリゴリメニュー組み上げちゃってください。

カスタムメニューの本領発揮

デフォルトでは「primary navigation menu」という場所しか追加されていません。

カスタムメニューを作ったはいいけど、1箇所にしかメニューを割り当てることが出来ないなんて嫌だ!

というワケで、カスタムメニューの対応箇所を増やします。

いつもどおりfunctions.php

記述します。

3.0からのみ対応しているので2.9系を利用しているユーザー方は3.0にしてあげるのもありだと思います。

先程追加した「add_theme_support("nav-menus");」の下あたりに記述しておくといいかもです。

register_nav_menu("GlobalNav", "theme global navigation");

これでカスタムメニューの表示領域設定を追加することが出来ます。

そうすると、「テーマの場所」ってところに「GlobalNav」という場所が追加されます。

この「追加された場所」に「作成したメニュー」を適用することで、割り当てたメニューが利用出来るようになります。

メニューの呼び出し方

テーマで呼び出すだけですが、3.0から追加されたwp_nav_menu関数を利用します。

この関数の引数は配列を取ることが出来ます。

この引数に「"theme_location" => "追加したメニューの名前(今回はGlobalNav)"」という形で引数に渡してあげることで、登録されたメニューを表示することが可能です。

wp_nav_menu(array( "theme_location" => "GlobalNav" ));

指定したメニューに何も登録されていなければ、登録されて公開済みのページが表示されます。

ざーーーーーーっと

説明してしまいましたが、カスタムメニューってすごく素敵です。

いちいち子ページを作らず、カスタム化したい箇所だけをメニュー化できるのが醍醐味だと思います。