WordPress ログイン/ログアウトユーザーに別のメニューを表示する

Last Updated:2023年11月13日| | コメントを残す

プラグインを使用するか、カスタムコードを追加してログインユーザーと非ログインユーザーに異なるメニューを表示できます

WordPress サイトでログインユーザーとログアウトユーザー(ゲスト)に異なるメニューを表示する必要がある場合があります。 この場合、プラグインを使用するか、簡単なコードを使用してメンバーと非メンバーに異なるメニューを表示できます。

WordPress サイトからログイン/ログアウトユーザーに別のメニューを表示する

ログインユーザーとログアウトユーザーに表示するメニューを異なる設定にしたい場合は、以下の方法を試すことができます。

プラグインを使用してログイン/ログアウトユーザーに別のメニューを表示する

プラグインを使えば簡単に可能です。 究極のメンバー, WP-メンバーなどのメンバーシッププラグインを使用している場合は、メンバーシッププラグインにこの機能があります。

Ultimate Memberプラグイン

UMを使用する場合 WordPress お知らせ > ルックス > メニューで対応するメニューを選択し、個々のメニュー項目の表示条件を指定できます。

Ultimate Member Menu Settings セクションの「誰がこのメニューリンクを見ることができますか?「で、次のオプションを選択できます。

  1. 全体(Everyone): すべてのユーザーに表示
  2. ログアウトしたユーザー (Logged Out Users): ログアウト状態のユーザー(ゲスト)に表示されます。
  3. ログインしたユーザー (Logged In Users): ログインしたユーザー(会員)に表示されます。

サイトの言語が英語の場合は、次のように表示されます。

WordPress サイトからログイン/ログアウトユーザーに別のメニューを表示する - 英語版

WP-Membersプラグイン

別の WordPress メンバーシッププラグインWP-Membersでも同じ機能を提供します。

WordPress ログイン/ログアウトユーザーに別のメニューを表示する2

ディスプレイ オプションで、ログインユーザー(Logged In Users)、ログアウトユーザー(Logged Out Users)、またはすべてのユーザー(All Users)に表示するように設定できます。

Conditional Menusプラグイン

会員制プラグインがインストールされていない場合は、無料プラグイン Conditional Menusプラグインを使用できます。 このプラグインは、特定のページに異なるメニューを表示できるように、さまざまな機能を提供します。

Condition(条件) 創造 タブで ログインしたユーザーをチェックすると、ログインしているユーザーにのみ対応するメニューが表示されます。

Conditional Menusプラグイン - ログインユーザーにメニューを表示する

このプラグインの詳細については、「WordPress ページに応じて他のメニューを表示する「を参考にしてください。

カスタムコードを使用してログインユーザーと非ログインユーザーに異なるメニューを表示する

プラグインを使用していない場合は、カスタムコードを使用してログインユーザーと非ログインユーザーに異なるメニューを表示することができます。

まず、 ルックス>メニューで、ログインユーザーに表示するメニュー(logged-inなど)とゲストユーザーに表示するメニュー(logged-outなど)をそれぞれ作成して設定します。

次に、次のコードをテーマの関数ファイルに追加します。

// 로그인 ユーザー와 비로그인 ユーザー에게 다른 메뉴 표시하기
// Show a different menu nagivation for logged-in users and logged-out users

function wpc_wp_nav_menu_args( $args = '' ) {
if( is_user_logged_in()) { 
  	if( 'top-navigation' == $args['theme_location'] ) { // top-navigation을 테마에 맞게 적절히 변경
	    $args['menu'] = 'logged-in';
	}
} else { 
	if( 'top-navigation' == $args['theme_location'] ) { // top-navigation을 테마에 맞게 적절히 변경
	    $args['menu'] = 'logged-out';
	}
} 
    return $args;
}
add_filter( 'wp_nav_menu_args', 'wpc_wp_nav_menu_args' );

theme_ロケーションはテーマによって異なります。 Avadaの場合、トップテーマの theme_ロケーションは「top_navigation」で、メインメニューの theme_ロケーションは「main_navigation」です。

プラグインを使用していない場合は、この方法を使用できます。

しかし、 エレメンプロを使用してヘッダーテンプレートを作成する場合は、メニューナビゲーションにおそらく theme_locationは割り当てられません。 この場合、この方法は利用できません。

最後に、

以上、ログイン/ログアウトユーザーに別のメニューを表示する方法について説明しました。 メニューの最後にログイン/ログアウトなどのメニュー項目を追加したい場合は、WordPress メニューへのログイン/ログアウトメニュー項目を追加する方法「を参照してください。

参照


コメントを残す

コメント