WordPressでログインユーザーに異なるメニューを表示する方法

WordPressサイトの訪問者がログインしているのに、あちこちに「ログイン」や「登録」ボタンが表示されていて混乱することがあるのに気づいたことはありませんか?あるいは、メンバーがアカウントダッシュボードを見つけにくく、メニューに埋もれているのかもしれません。

これらの小さなフラストレーションは、最も忠実なユーザーでさえ、自分のウェブサイトで部外者のように感じさせる可能性があります。

そして、パーソナライズされたメニューはすべてを変えることができます。ログインユーザーに「マイアカウント」や「ログアウト」などのオプションを表示することで、一般的なリンクよりも、サイトがより歓迎され、プロフェッショナルに感じられます。

良いニュースは?WordPressで動的なメニューを作成するのは、思っているよりも簡単です。

このガイドでは、スキルレベルに関係なく、ログインユーザーに異なるメニューを表示する簡単な2つの方法を紹介します。💡

WordPressでログインユーザーと未ログインユーザーに異なるナビゲーションメニューを表示する

WordPressでログインユーザーに異なるメニューを表示する理由

訪問者とそのアクティビティに基づいて、WordPressウェブサイトのさまざまな領域を変更すると、各ユーザーにとってサイトがパーソナライズされたものになります。

このパーソナライズされたコンテンツは、WordPressサイトでのユーザーエクスペリエンスを向上させるのに役立ちます。

ユーザー登録やログインが不要なウェブサイトを運営している場合、ウェブサイト全体で同じナビゲーションメニューを使用できるでしょう。しかし、ログインユーザーにカスタムメニューを表示することで、他のウェブサイトは大きなメリットを得られる可能性があります。

例えば、オンラインストア、オンライン学習プラットフォーム、またはWordPress会員サイトコミュニティのようなウェブサイトは、パーソナライズされたナビゲーションメニューから大きなメリットを得ることができます。

ログインユーザー向けのパーソナライズされたナビゲーションメニューは、登録したものを簡単に見つけるのに役立ちます。

例えば、オンラインストアのユーザーはアカウントを管理したり、有料コミュニティのメンバーはサブスクリプションを簡単に更新したり、購入した限定のオンラインコースを閲覧したりできます。

ログインユーザー向けの異なるメニュー

デフォルトでは、WordPressでは必要なだけ多くのナビゲーションメニューを作成できます。ただし、WordPressテーマの特定の場所に表示できるメニューは1つだけです。

ログインユーザー向けのメニューを設定する前に、まず2つの別々のナビゲーションメニューを作成する必要があります。1つはログインユーザー用、もう1つはログアウトユーザー用です。始めましょう。

⚠️ ちょっとした注意点です! ここで紹介する方法は、WordPress のクラシックテーマを使用しているユーザー向けに設計されています。WordPress 5.8 以降のフルサイト編集(FSE)機能を使用するブロックテーマを使用している場合、この方法は機能しない可能性があります。 

WordPressでログインユーザーと非ログインユーザー向けのメニューを作成する

ユーザーの2つのタイプごとに個別のメニューを作成するには、WordPressダッシュボードの外観 » メニューページに移動します。

ウェブサイトで全ユーザーが使用しているナビゲーションメニューが既にある場合は、それをデフォルトメニューとして使用できます。

メインメニュー

その後、「新しいメニューを作成」リンクをクリックすると、ログインユーザー用の新しいカスタムメニューを作成できます。

ここで、登録済みまたはログイン中のユーザーに表示したいメニュー項目を追加してください。たとえば、メニューにログアウトリンクを追加することができます。

画面の左側には、ウェブサイトのページリストが表示されます。メニューに追加したいページにチェックボックスを入れ、「メニューに追加」ボタンをクリックするだけです。

ログインメニュー

画面右側のメニュー項目をドラッグアンドドロップして並べ替えることもできます。

ページをさらに下にスクロールすると、メニューを表示する場所を選択できます。ただし、このメニューに場所を割り当てる必要はありません。記事の後半でそれを行います。

変更を保存するには、「メニューを保存」ボタンをクリックすることを忘れないでください。

メニューの作成に関する詳細については、WordPressナビゲーションメニューの初心者ガイドをご覧ください。

これで、ログインユーザーに異なるメニューを表示する準備が整いました。このガイドで説明するすべての方法の概要を以下に示します。

よりパーソナライズされた体験の準備はできましたか?さあ始めましょう!🌟

方法1.プラグインを使用してWordPressでログインユーザーに異なるメニューを表示する

ログインユーザーに異なるメニューを表示する最も簡単な方法は、 Conditional Menus プラグインを使用することです。まず、それをインストールして有効化しましょう。

詳細については、WordPressプラグインのインストール方法に関するステップバイステップガイドをご覧ください。

有効化したら、WordPressダッシュボードから外観 » メニューに移動する必要があります。次に、「メニューの管理」タブに切り替えます。

ここから、WordPressテーマで定義されている利用可能なメニューの場所と、現在表示されているメニューのリストが表示されます。

例えば、現在の「プライマリメニュー」の場所には「メインメニュー」が表示されています。

メニューの場所を管理

次に、特定の条件が一致した場合に異なるメニューを表示するようにプラグインに指示する必要があります。

これを行うには、「+ 条件付きメニュー」リンクをクリックします。次に、ドロップダウンメニューからログインユーザーに表示したいナビゲーションメニューを選択できます。

ログイン中のメニューを選択

次に、「+ 条件」リンクをクリックします。

これにより、選択できる条件のリストが表示されるポップアップが表示されます。

ログインユーザーを条件として選択

「ユーザーログイン中」オプションの横にあるチェックボックスをオンにしてから、「保存」ボタンをクリックするだけです。

これで、ウェブサイトにアクセスして、ログイン中のユーザーメニューが機能していることを確認できます。WordPress管理画面からログアウトして、他のすべてのユーザーに表示されるナビゲーションメニューを表示することもできます。

ログインユーザー向けの異なるメニュー

方法2. コードを使用してWordPressでログインメニューを手動で選択する

この方法では、WordPressウェブサイトにコードを追加する必要があります。以前にこれを実行したことがない場合は、WordPressにWeb上のスニペットをコピーして貼り付けるための初心者ガイドに関するガイドをご覧ください。

一般的に、ブログではテーマのfunctions.phpファイルまたはサイト固有のプラグインにコードスニペットを追加する必要があると言われます。しかし、この方法はウェブサイトに問題を引き起こす可能性があるため、お勧めしません。

代わりに、WPCodeプラグインを使用できます。

WPCodeを使用すると、テーマファイルを直接編集せずにカスタムコードスニペットをサイトに追加できます。また、これらのスニペットを管理し、安全に実行されるようにすることで、サイトが壊れるリスクを最小限に抑えるのに役立ちます。

ℹ️ 注: 当社のパートナーブランド全体で、WPCodeはカスタムスニペットを追加して各サイトの機能を拡張するための定番ツールとなっています。詳細については、WPCodeの包括的なレビューをお読みください。

開始するには、WPCodeプラグインをインストールしましょう。ログインユーザーに異なるメニューを表示するために必要なすべての機能が備わっているため、WPCodeの無料版を使用できます。

ただし、コードの改訂履歴やスニペットの公開スケジュールなどの高度な機能にアクセスしたい場合は、WPCode Proへのアップグレードを検討してください。

インストールしたら、コードスニペット » スニペットを追加に移動します。

WPCodeのコードスニペット追加ボタン

これにより、WPCode のコードスニペットギャラリーが開きます。

ここから、「+カスタムスニペットを追加」ボタンをクリックできます。

WPCodeにカスタムスニペットボタンを追加

次にWPCodeのテキストエディタが表示されます。

次のステップは、コードスニペットにタイトルを追加し、「コードタイプ」ドロップダウンメニューから「HTMLスニペット」を選択することです。

WPCodeでスニペットのタイトルを追加し、コードタイプを選択する方法

完了したら、次のコードを「コードプレビュー」フィールドにコピー&ペーストするだけです。

function my_wp_nav_menu_args( $args = '' ) {
if( is_user_logged_in() ) {
// Logged in menu to display
$args['menu'] = 43;

} else {
// Non-logged-in menu to display
$args['menu'] = 35;
}
return $args;
}
add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );

WPCodeエディタでは、このようになります。

WPCodeのコードプレビューのカスタムHTMLスニペット

4335を、先ほど作成したナビゲーションメニューのIDに置き換えてください。

ナビゲーションメニューのIDは、「メニュー」ページで選択すると見つけることができます。メニューID番号はブラウザのアドレスバーに表示されます。

ナビゲーションメニューのIDを見つける

すべての詳細が正しいことを確認したら、青い「スニペットを保存」ボタンをクリックしてください。

それで終わりです!

ボーナスチップ:WordPressメニューでの条件付きロジックのさらなる使用例

ナビゲーションに関しては、条件付きロジックは、ログインユーザーに異なるメニューを表示する以上のことができます。以下にいくつかの簡単な例を示します。

  • ユーザーロールに基づいて異なるメニューを表示する: 管理者は共同作業者とは異なるメニューを表示できます。たとえば、管理者にはサイト設定やユーザー管理などの管理者専用オプションを表示し、共同作業者やその他のユーザーロールには一般的なナビゲーションリンクを提供します。
  • 異なるページに異なるメニューを表示する: ブログページや商品ページにユニークなメニューを表示したいですか? 条件付きロジックを使用すると、それぞれに特定のメニューを作成でき、ナビゲーションをコンテンツに合わせて調整できます。
  • ランディングページでのナビゲーションを非表示にする:ランディングページは、邪魔がない方が最も効果的です。条件付きロジックを使用してナビゲーションメニューを非表示にし、サインアップフォームや商品オファーなどのコールトゥアクションに注意を集中させましょう。

詳細については、WordPressでメニューに条件付きロジックを追加する方法に関するガイドを参照してください。

よくある質問:WordPressでログインユーザーに異なるメニューを表示する方法

WordPressでユーザーごとに異なるメニューを表示する方法について、まだご質問がありますか?以下に役立つ簡単な回答をいくつかご紹介します。

ユーザーロールに基づいて異なるメニューを表示できますか?

もちろんです。管理者、編集者、またはサイトのその他のカスタムユーザーロールごとにユニークなメニューを表示できます。Conditional Menusプラグインは、これを設定するための簡単なオプションを提供しており、チームメンバーのナビゲーションを調整するのに最適です。

プラグインを使用するのと、コードを手動で追加するのとでは、どちらが良いですか?

ほとんどのユーザーには、Conditional Menus や WPCode のようなプラグインの使用をお勧めします。これらのツールを使えば、テーマファイルを触ることなく、異なるメニューを簡単に表示できます。

WPCodeは、コードを使用する柔軟性を好む場合に特に役立ちます。カスタムPHPスニペットを安全に追加し、WordPressダッシュボードから管理できます。functions.phpを直接編集する必要はありません。

手動コーディングは開発者にとって依然として良い選択肢ですが、それ以外の人にとっては、プラグインの方が安全で初心者フレンドリーな選択肢です。

特定のページでナビゲーションメニューを非表示にできますか?

はい、同じ条件付きロジックを使用して、特定のページでナビゲーションメニューを非表示にすることができます。これは、ランディングページの一般的な戦略であり、気を散らすものを排除し、訪問者をあなたのコールトゥアクションに集中させます。

追加リソース:WordPressのユーザーロールとサイトナビゲーション

この記事が、WordPressでログインユーザーに異なるナビゲーションメニューを簡単に表示する方法を学ぶのに役立ったことを願っています。次に、次のガイドも参照してください。

この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。 TwitterFacebookでもフォローできます。

開示:当社のコンテンツは読者によってサポートされています。これは、当社のリンクの一部をクリックすると、当社が手数料を得る可能性があることを意味します。WPBeginnerがどのように資金提供されているか、それがなぜ重要か、そしてどのように私たちをサポートできるかについては、こちらをご覧ください。当社の編集プロセスはこちらです。

究極のWordPressツールキット

無料のツールキットにアクセスしましょう - すべてのプロフェッショナルが持つべきWordPress関連の製品とリソースのコレクションです!

読者とのインタラクション

101 CommentsLeave a Reply

  1. このコードは、phpコードタイプを選択しないと実行されないことがわかりました。HTMLからPHPに変更したところ、素晴らしかったです!

  2. Clear and actionable guide!
    Thank you for this comprehensive guide on showing different menus to logged-in users in WordPress.
    I particularly appreciate the two methods you’ve outlined – using the Conditional Menus plugin and the manual code approach.
    You have certainly given me some ideas to enhance my own WordPress sites. Thanks again WPBeginner :)

  3. うまく動作しました! 上部に2つのメニューがあります。ヘッドライナーメニューとメインメニューです。コードを使用すると、ユーザーがログインしている場合、上記のメニューはログイン中のメニューに切り替わります。ヘッドライナーメニューが同じままであるようにコードを調整するにはどうすればよいですか?

  4. メニュー全体ではなく、特定のメニュー項目に対して行う方がはるかに簡単でしょう。メニュー項目が499個ある人はどうすればよいでしょうか?

    • メニュー項目が多すぎると、ユーザーがナビゲートするのが非常に困難になり、メニューリンクが訪問者にとって価値を提供しない場合、SEOの問題を引き起こす可能性があるため、それほど多くのメニュー項目はお勧めしません。

      管理者

  5. 100%。Sahifaテーマで設定したばかりで、驚くほどうまく機能します。

    この良い仕事を続けてください。

  6. これは非常に役立ちますが、ユーザー名とアバターを表示して、他のプロファイルメニュー項目をドロップダウンメニューとして機能させる方法はありますか?

  7. 表示されたパスはカスタムメニューを表示するだけで、うまくいきます。しかし、ユーザーの興味に基づいて特定のログインユーザーにコンテンツを表示したい場合はどうなりますか?これは、さまざまなディールサイトのように詳細であり、ログインして興味を保存すると、次の瞬間にはその特定のトピックのディールのみが表示されます。WordPressプラグインを使用してそれを可能にできますか?

  8. こんにちは、素晴らしい仕事に感謝します。複数のユーザーロールについて質問があります。

    メインメニューは2つあります。メニュー1とメニュー2です。

    すべてのユーザー(ログイン中または未ログイン)にメインメニューを表示したいのですが、ユーザーロールが「Alt」の場合は、メニュー1がメニュー2に置き換えられます。

    どうすればそれを実行できますか?

  9. @ERICLEE それを防ぐために子テーマを作成できます。ちょうどこのコードを追加したところで、同じことをする必要があります。

  10. サブスクライバープロファイルに、ホームページ以外でメニューを追加することは可能ですか?これらのメニューページはホームページには表示されず、各サブスクライバープロファイルにのみ表示されます。もし可能であれば、手順を教えてください。また、プラグインを使用する方法も教えてください。

  11. wpサイトの購読者のプロフィールにメニューを追加することは可能ですか?もし可能であれば、この作業のためにどのようなプラグインを使用すればよいか、誰か教えていただけますか?

  12. 多言語メンバーサイトで同じことを達成するにはどうすればよいですか?例えば、英語でログインしたユーザーとドイツ語でログインしたユーザーで異なるメニューを表示するにはどうすればよいですか?

  13. ログインメニューとログアウトメニューを追加しましたが、ログインとログアウトのページをどのように設定すればよいですか??

返信する

コメントを残していただきありがとうございます。すべてのコメントは、当社のコメントポリシーに従ってモデレーションされますので、ご了承ください。メールアドレスは公開されません。名前フィールドにキーワードを使用しないでください。個人的で有意義な会話をしましょう。