WordPressの「カスタムメニュー」って、感覚的に投稿・固定ページ・カテゴリーページなどのリンクを追加・削除したり、ドラッグ&ドロップでメニューの位置を入れ替えたりできるので便利ですね。
カスタムメニューは便利
WordPressの管理画面→「外観」→「メニュー」から、カスタムメニューのページを開くことができます。
このカスタムメニューの「メニュー構造」に追加したアイテムに入力したデータを取得する必要がありました。
メニュー構造に追加したアイテム
アイテムに入力したデータを取得したい
以下にその方法を書きましたので、機会がありましたらご参考ください。
WordPressのカスタムメニューで「メニュー構造」に追加したアイテムのデータを取得する方法
WordPressの「wp_get_nav_menu_items」を使うとできます。メニュー名(メニューID)が変わっても動作するように、ロケーション名を指定する方法が柔軟に対応できます。
サンプルコード
<?php $menu_name = 'primary'; //ロケーション名を入れる $locations = get_nav_menu_locations(); $menu_id = $locations[ $menu_name ]; //メニューIDを取得する $menu_object = wp_get_nav_menu_object($menu_id); //引数にメニューIDを指定して情報を取得する $nav_items = wp_get_nav_menu_items( $menu_id ); //メニューIDを指定してアイテムのデータを取得 foreach( $nav_items as $item ){ //アイテムの数だけループさせて何かする } ?>
「なぜメニュー名(メニューID)よりロケーション名を入れたほうが柔軟か」という話は、以下のページに以前書きましたのでご参考ください。
というわけで、例えば固定ページ「ヘルプ」のアイテムの入力欄に、以下のようなデータが入っていたとします。
上記のコードを使えば、
- ナビゲーションラベル
- リンクを新しいタブで開く(チェックが入っている場合は「_blank」が取得できる)
- タイトルの属性
- CSSのclass名
- XFN
- 説明
など、アイテム別に入力したデータを取得できます。(取得できる値は他にもあるので、詳細は「wp_get_nav_menu_items」でご確認ください)
「wp_get_nav_menu_items」はどんな時に使えるか
私の場合は、アイテムの説明欄にショートコードを入れることがあって、メニューを表示する場所とは別のところにそのショートコードを出力させたかったので、この方法を使いました。
カスタムメニューの操作性の良さを利用して、ナビゲーション以外の目的に使うのもありじゃないかな、と思います。
このページを共有する