WordPress整体院
主にwordpressのカスタマイズやトラブル対策
  1. ホーム
  2. > WordPress
  3. > カスタムメニューでテーマの場所が設定されているかチェックする方法
WordPress
2013.03.27.

カスタムメニューでテーマの場所が設定されているかチェックする方法

カスタムメニューに関連したお話し。

現在依頼されて作っているテンプレートでは、ページの上部に横並びのメニュー(グローバルメニューとよく呼ばれるやつ)をカスタムメニューで作っています。

で、カスタムメニューの設定で「テーマの場所」にメニューが設定されていない場合、別のものを表示させたいという要望がありました。

最初はfallback_cbパラメータにコールバック関数を書けばよいかと思ったのですが、HTMLの構造の問題で要望が上手く反映できないことが判明。

「テーマの場所」にメニューが設定されるかどうかで条件分岐できれば楽ちんなのになぁ・・・と思っていたらそのものズバリのタグがありました。

has_nav_menu()

使い方はこんな感じ。

[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()にメニューがセットされているかどうかをチェックする

この方は最初はこのタグを知らずに判断するソースを作ってらっしゃったそうです。そういうことができるのがスゴイですね。
他にも役立ちそうなスニペットが沢山ありそう。参考にさせてもらいます!

スポンサーリンク
デジ部長 デジ部長 WordPress, カスタマイズ

コメント

この記事へのコメントはありません。

コメントをどうぞ

返信をキャンセルする。

メールアドレスが公開されることはありません。

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

≪前の投稿
カスタムフィールド内のデータの改行
次の投稿≫
WP Social Bookmarking Lightでボタンがずれる

プロフィール

HN:デジ部長
整体院とパーソナルトレーニングをやっていますが、WordPressをいじっていたらそちらの方が楽しくなり、知り合いのサイト作成やテーマ作りなどをボチボチとやっています。
このブログはそのときの覚え書きなどが主な目的でやってます。

カテゴリー

  • HTML/CSS
  • javascript
  • Mac
  • PHP
  • PPC広告
  • SEO
  • WordPress
  • カスタマイズ
  • サイト管理関係
  • テーマ開発
  • パソコン全般
  • プラグイン
  • 思った事

トップ
Copyright© 2019-2025 WordPress整体院 all right reserved