ログイン時にメニュー切り替え(カスタムメニューロケーションID切り替え)

会員がログイン時にだけに使えるメニューバーとログオフ時のメニューバーの2つのメニューバー を用意しておき、ログイン時とログオフ時によって切り替える方法を試した。

1.会員向けカスタムメニューロケーションIDの準備

会員向けのメニューロケーションIDを次のようにして作る。
①functions.phpに次のソースコードを記述して、カスタムメニューロケーションIDを追加にする。

//カスタムメニュー
register_nav_menus(array(
	'navigation' => 'ナビゲーションバー'
));

②管理画面の[外観>メニュー]でナビゲーションバーに表示するメニューを作成する。

  • 「メニューの名前」にメニュー名を記入
  • 「メニューを作成」をクリック
  • 固定ページを作成したメニュー名に追加
  • 「テーマの場所」の「ナビゲーションバー」のプルダウンからnavigationを選択して保存する。

2.ログイン判定とメニューバーの表示

  • ログイン判定はis_user_logged_in()関数で行う。この関数の実行結果が真ならばログイン済み、偽であれば未ログインである。
  • メニューバーの表示はカスタムメニューロケーションIDの切り替えを次のようにして行う。wp_nav_menu(array(‘container_class’ => ‘menu-header’,’theme_location’ => ‘navigation’));
  • メニューバーの表示はheder.phpで行っているので、この中にログインの判定とメニューバーの表示を次のように組み込む。
    if(is_user_logged_in()):
      /*  ログイン済み  */
       wp_nav_menu(array('container_class' => 'menu-header','theme_location' => 'navigation'));
    else:
      /* 未ログイン */
       wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) );
    endif;