カスタムメニューロケーション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;