カスタムメニューでテーマの場所が設定されているかチェックする方法
カスタムメニューに関連したお話し。
現在依頼されて作っているテンプレートでは、ページの上部に横並びのメニュー(グローバルメニューとよく呼ばれるやつ)をカスタムメニューで作っています。
で、カスタムメニューの設定で「テーマの場所」にメニューが設定されていない場合、別のものを表示させたいという要望がありました。
最初はfallback_cbパラメータにコールバック関数を書けばよいかと思ったのですが、HTMLの構造の問題で要望が上手く反映できないことが判明。
「テーマの場所」にメニューが設定されるかどうかで条件分岐できれば楽ちんなのになぁ・・・と思っていたらそのものズバリのタグがありました。
使い方はこんな感じ。
[html]
<?php
if ( has_nav_menu( $location ) ) {
//メニューが設定されている時の処理
}else{
//メニューが未設定の時の処理
} ?>
[/html]
$locationのところにはregister_nav_menusで設定した値を入力します。
たとえば
[html]
register_nav_menus( array(
‘headerMenu’ => ‘メインナビ’,
‘primaryMenu’ => ‘プライマリーナビ’,
) );
[/html]
と書いてカスタムメニューを設定した場合、’headerMenu’や’primaryMenu’を入れればOKです。
日本語版のCodexでhas_nav_menuを見つけた時は何故かリンクがなかったのでGoogle先生に問い合わせると英語版が出て来ました。
なぜでしょうね?
ついでに、このタグについて日本語で書いてある記事も見つけました。
wp_nav_menu()にメニューがセットされているかどうかをチェックする
この方は最初はこのタグを知らずに判断するソースを作ってらっしゃったそうです。そういうことができるのがスゴイですね。
他にも役立ちそうなスニペットが沢山ありそう。参考にさせてもらいます!
コメント
この記事へのコメントはありません。
コメントをどうぞ