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

カスタムメニューロケーションIDの切り替え以外にカスタムメニューIDを切り替えることでも実現できる。こちらのほうはメニューIDが入っているロケーションIDを操作するのではなく直接メニューIDを切り替えるので分かりやすいが、メニューIDが変わると表示しているソースコードの修正が伴うことになる。しかし現実にはメニューIDを変えることは殆どないと思われる。

1.会員向けカスタムメニューIDの準備

会員向けのメニューロケーションIDを次のようにして作る。

 ①functions.phpに次のソースコードを記述する。

//カスタムメニュー
add_theme_support( 'menus');

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

  • 「メニューの名前」にメニュー名を記入
  • 固定ページを作成したメニュー名に追加

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

  • ログイン判定はis_user_logged_in()関数で行う。この関数の実行結果が真ならばログイン済み、偽であれば未ログインである。
  • メニューバーの表示はカスタムメニューIDの切り替えを次のようにして行う。指定するパラメータは下に示した以外にもあるので詳細はwp_nav_menuを参照すること。例えばテーマを変えるとメニューのクラス名が変わっている場合がある。その場合menu_classを追加して、メニュークラス名を変更する必要がある。 wp_nav_menu(array(‘container_class’ => ‘menu-header’,’menu’ => ‘navimenu’));
  • メニューバーの表示はheder.phpで行っているので、この中にログインの判定とメニューバーの表示を次のように組み込む。
    if(is_user_logged_in()):
      /*  ログイン済み  */
      wp_nav_menu(array('container_class' => 'menu-header','menu' => 'navimenu'));
    else:
      /* 未ログイン */
      wp_nav_menu( array( 'container_class' => 'menu-header', 'menu' => 'メニュー' ) );
    endif;