• かちびと.net

    WordPressのカスタムメニューをショートコードで表示出来る様にする方法をご紹介。固定ページや記事内にカスタムメニューを実装します。

    Kudos for

    WordPress jQuery
  • About This

    Web制作に役立つTips、チュートリアル、、マーケティングに役立つ情報などのリソースをほぼ毎日配信しています。宜しければメモ代わりにご利用下さい。詳しい情報はAbout me またはhumans.txtをご覧下さい。

    Kachibito.net is a community-based website for web designers and developers. The site includes a popular weblog, a design gallery, a open source software, design tips, and the various web-news.

  • Links

WordPressのカスタムメニューをショートコードで表示出来る様にする

スポンサーリンク

仕事で必要になったのでメモ。WordPressで作れるカスタムメニューをショートコードで実装出来るようにする、という方法です。やってみて思ったけど結構便利です。

カスタムメニュー、という名ですけど、メニューコンテンツ以外にも利用出来るので、ショートコードで実装する方法は覚えておいて損は無いです。

コード

以下のようなコードをfunctions.phpに含めます。

01function single_page_custom_menu($atts, $content = null) {
02    extract(shortcode_atts(array
03        'menu'            => '',
04        'container'       => 'div',
05        'container_class' => '',
06        'container_id'    => '',
07        'menu_class'      => 'menu',
08        'menu_id'         => '',
09        'echo'            => true,
10        'fallback_cb'     => 'wp_page_menu',
11        'before'          => '',
12        'after'           => '',
13        'link_before'     => '',
14        'link_after'      => '',
15        'depth'           => 0,
16        'walker'          => '',
17        'theme_location'  => ''),
18        $atts));
19  
20  
21    return wp_nav_menu( array(
22        'menu'            => $menu,
23        'container'       => $container,
24        'container_class' => $container_class,
25        'container_id'    => $container_id,
26        'menu_class'      => $menu_class,
27        'menu_id'         => $menu_id,
28        'echo'            => false,
29        'fallback_cb'     => $fallback_cb,
30        'before'          => $before,
31        'after'           => $after,
32        'link_before'     => $link_before,
33        'link_after'      => $link_after,
34        'depth'           => $depth,
35        'walker'          => $walker,
36        'theme_location'  => $theme_location));
37}
38add_shortcode("cmenu", "single_page_custom_menu");

上の配列はカスタムメニューのセッティング用です。

[cmenu menu=”foo”]

これで、管理画面の外観→メニューで作成した「foo」という名のカスタムメニューを上記のようなショートコードで実装する事が出来ます。

[cmenu menu=”foo” menu_id=”bar”]

とすれば、id="bar"が付きます。

カスタムメニューの設定はCodex(テンプレートタグ/wp nav menu)をご参照ください。

冒頭にも書きましたが、カスタムメニューと言ってもメニューにしか使えない、という訳ではありません。

  1. 管理画面で管理可能
  2. ネスト可能
  3. リンク先を自由に設定
  4. 複数作成可能
  5. 詳細やclassも加えられる

といった特徴があるので、リンク集やサイトマップ(コードはカスタムメニューとショートコードを使ったサイトマップ作成を参照)も任意の内容で作成出来ます。また、固定ページの子ページや孫ページへのインデックスを作るのもいいかもしれません。

以前書いた、「カスタムメニューを使って、サブタイトル付きのナビゲーションを実装する」方法を利用して、ツールチップでリンク先の説明文を出す、などのコンテンツも作成出来るし、管理画面でツールチップ内の文章を管理出来ます。

いずれにしてもショートコードで実装する事も出来るのでカスタムメニューの利用価値は非常に高い機能と言えますね。ともあれ、地味に大変なのはクライアントさんにカスタムメニューの使い方を知って貰うことなんですけども。

0
Share

URL :
TRB :

Comments & Trackbacks (4)

  1. tamako

    すごく役にたちました!ありがとうございます。

    • シロ

      お役にたたら幸いですー!

Ads

Posts

Contact

Services