web-dev-qa-db-ja.com

ユーザーのログインに応じてフロントエンドメニューを変更する

ユーザーがログインしているかどうかに応じてフロントエンドメニューを変更する方法を教えてください。

例えば:

表示1:ユーザーはログインしていません
メニューは次のとおりです。home、私達について、紹介文

表示2:ユーザはログインしています
メニューはダッシュボード、私のプロフィール、サポートです

前もって感謝します。

2
rexposadas

2つのメニューを定義し、それらがログインしているかどうかに基づいてそれらを提供します。それらはテーマのfunctions.phpファイルで実行できます。

if (is_user_logged_in()){
  wp_nav_menu( array(
    'menu'            => 'Logged In Menu',
    'container_class' => 'logged-in-menu',
    'theme_location'  => 'logged-in'
  ));
} else {
  wp_nav_menu( array(
    'menu'            => 'Visitor Menu',
    'container_class' => 'visitor-menu',
    'theme_location'  => 'visitor'
  ));
};

テーマの場所も登録する必要があります。これは、テーマのfunctions.phpファイルでも行うことができます。

register_nav_menus( array(
  'logged-in'  => __( 'Logged-in Menu Area',  'yourtheme' ),
  'visitor' => __( 'Visitor Menu Area', 'yourtheme' ),
));

そして、あなたはそれらのメニューを管理者の中のそれらのメニュー位置に割り当てる必要があります。

WordPress Admin Menu Locations

8
MikeSchinkel