カスタムメニューが設定されているかの判定に加え、項目が空かどうかも判定する分岐処理

カスタムメニューが設定されているかの判定、そして項目が空かどうかも判定する分岐処理について。

カスタムメニューの設定の有無は、WordPressが用意している関数has_nav_menu()を使えば判定できます。例えば以下のようにカスタムメニューを設定している場合、

プライマリーメニューが設定されているかどうかを判定するにはこのように記述します。

 メニュー項目の有無を判定

カスタムメニューに項目が設定されているかどうかを判定する関数は、WordPressでは用意されていません(多分)。

そこで、この「項目が有るのか、無いのか」を判定してくれる関数を用意してくれた方がいるのでありがたく使わせていただきましょう。こちらのWordPressフォーラムで公開してあります。

まず、関数を使えるようにするためfunctions.phpにソースコードを追記します。

これをfunctions.phpに記述しておけば以下のように使って項目の有無まで判定できます。

ただ、もう少し細かく分岐処理したくなる場合もあると思います。例えば

  1. メニューは設定されている
  2. メニューは設定されているが、項目は空
  3. メニューは設定されていない

という3つの条件で振り分けたい、など。その場合は上記2つの関数を組み合わせて使いましょう。以下に例を示します。

以上です。


本当ならis_active_nav_menu()をちょっと改良し、引数で3つの条件を振り分けた方が判定の重複が無くなって良いと思います。(そのうち追記で改良する予定です)

最終更新日:2014年9月28日

コメント

「何かそこ違うよ」「こうした方が良い」っていう部分があったら指摘して頂けると嬉しいです。

トラックバック

トラックバックは現在ありません。

Trackback: https://increment-log.com/active-custom-menu/trackback/