WordPressにログインしていない場合にユーザーをリダイレクトする方法»ページリダイレクト

公開: 2022-01-02

WordPressにログインしていない場合にリダイレクトする方法 前回の投稿では、ユーザーがWordPressにログインしているかどうかを確認する方法を示しました。 WordPressユーザーがログインしているかどうかを確認する一般的な理由の1つは、WordPressユーザーのログインステータスに基づいてさまざまなページを表示することです。 WordPressにログインしていない場合にユーザーをリダイレクトする場合は、このクイックチュートリアルに示すように、functions.phpファイルにコードスニペットを追加することでこれを実現できます。

なぜWordPressでユーザーをリダイレクトするのですか?

ユーザーのリダイレクトは、ほとんどのWordPressサイトにとって重要な要件です。 ユーザーをあるページから別のページにリダイレクトしたい場合があります。 たとえば、チェックアウト後にWooCommerceユーザーをリダイレクトしたり、Webサイトへの登録またはリダイレクトログイン後にユーザーをリダイレクトしたりできます。

ログインしていない場合にリダイレクトすることは、最も一般的なリダイレクトの1つです。 WordPressでリダイレクトを管理するのに役立つプラグインがありますが、この問題を解決する小さなスニペットを追加することは、サードパーティのプラグインに依存するよりも優れたソリューションです。

このチュートリアルでは、選択したページにログインしていないユーザーのリダイレクトを作成するスニペットをテーマまたはプラグインに追加する方法を示します。

WordPressにログインしていない場合にリダイレクトする手順

WordPressにログインしていない場合にリダイレクトを実装するには、次の手順に従う必要があります。

  1. WordPressサイトにログインし、メインダッシュボードメニューの外観メニューの下にあるテーマエディターに移動します。
  2. アクティブなWordPressテーマのfunctions.phpファイルを開きます。 CPanelまたはFTPを使用して、アクティブなテーマのfunctions.phpファイルにアクセスすることもできます。 このパスにあります– wp-root-installation / wp-content / themes / active-theme / functions.php
  3. admin初期化フックにフックするアクションフックを作成しますadmin_init 、たとえばadd_action('init', 'redirect_if_not_logged_in') このフックには、ユーザーがWordPressにログインしているかどうかを確認するロジックを備えたコールバック関数があり、ログインしていない場合は、目的のページにリダイレクトされます。
  4. 上記のようにコールバック関数を作成し、それに応じてコードを追加します。
  5. 変更を保存し、フロントエンドに移動して、ログインしていないユーザーがコードで追加したページにリダイレクトされるかどうかをテストします。

ユーザーがWordPressにログインしていない場合にリダイレクトを追加する方法を示しましょう。 ローカルホストのインストールでデフォルトのWordPressテーマを使用しますが、これはテーマやホスティング環境に関係なく、他のすべてのサイトで機能します。

リダイレクトを追加するコードは、ログに記録されていないユーザーからのコンテンツを制限する場合のほとんどの場合のように、別の条件をとることもあります。次の2つの条件を確認します。

  • ユーザーがログインしている場合
  • 制限されたコンテンツがあるページにユーザーがいる場合

これらの条件が満たされた場合は、wp_redirect()関数を使用して、ユーザーを選択したページにリダイレクトする必要があります。

WP関数:wp_redirect()

これは、ユーザーをリダイレクトするためにテーマとプラグインで使用できるWordPressリダイレクト機能です。 この関数の一般的な表現は次のとおりです。

wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )

ご覧のとおり、関数には次の3つのパラメーターがあります。

パラメータ説明
$location これは、ユーザーをリダイレクトするURLです。 ユーザーがログインしていないときにこの関数を使用する場合は、コードサンプルに示されているように、ユーザーをリダイレクトするページへのURLを指定する必要があります。
$status これはオプションのパラメータであり、頻繁に使用されることはないかもしれませんが、使用するのはHTTP応答ステータスコードです。 デフォルトは「302」で、永続的なリダイレクトには301を使用できます。 このパラメータを301リダイレクトオプションとともに使用する場合は注意が必要です。
$x_redirect_by これは単にリダイレクトを適用するアプリケーションであり、これによってデフォルト値であるWordPressが変更されることはめったにありません。

ユーザーがログインしていない場合のテンプレートリダイレクトアクション

WordPressにログインしていないユーザーをリダイレクトするために、ユーザーが次のようにログインしているかどうかを条件付きでチェックするwp_redirect関数を使用できるようになりました。

 add_action( 'template_redirect'、 'redirect_if_user_not_logged_in');

関数redirect_if_user_not_logged_in(){

	if(is_page( 'slug || ID')&&!is_user_logged_in()){//例はis_page(23)で、23はページIDです。

		wp_redirect( 'http:// your-redirect-page-here'); 
 
     exit; // wp_redirect()がexit / dieを持つことは非常に重要なので、このexitを決して忘れないでください
   
   }
   
}

条件付きチェックのスラッグをそれぞれのページに置き換え、上記のコードのリダイレクトURLを置き換えて、functions.phpに追加し、そのページのURLにログインしていないユーザーをリダイレクトします。

ユーザーがログインしていない場合の管理者初期リダイレクトアクション

または、wordPressにログインしていない場合は、 template_redirectの代わりにadmin_initをフックして、ユーザーをリダイレクトすることもできます。

アクションフックを追加する点を除けば、コードは同じである必要があります。 コードは次のようになります。

 add_action( 'admin_init'、 'redirect_if_user_not_logged_in');

関数redirect_if_user_not_logged_in(){

if(!is_user_logged_in()&& is_page( 'slug')){

      wp_redirect( 'http:// your-redirect-page-here'); 
   
   出口;
   }
}

このコードをデフォルトのWordPressテーマfunctions.phpに追加し、リダイレクトを作成するページのスラッグと宛先のURLを追加すると、次のように完全に機能します。

WordPressにログインしていない場合にリダイレクトする方法

最終的な考え

ユーザーがWordPressにログインしていない場合にリダイレクトを作成する場合は、最初にその投稿で共有したコードを使用してユーザーがログインしているかどうかを確認してから、 wp_redirect()関数を使用してユーザーが必要な新しい宛先を追加する必要があります特定のページまたは投稿にアクセスするとリダイレクトされます。

このコードは、テーマのfunctions.phpファイルに追加することも、カスタムWordPressプラグインの一部として使用することもできます。 wp_redirect関数を使用する場合、この関数は自動的に終了しないため、 exit追加することを忘れないでください。

WordPressプラグインの開発者は、$ locationパラメーターホストが許可されているかどうかをチェックするため、リダイレクトのより良い方法を提供する別のWordPressリダイレクトプラグインwp_safe_redirect()を検討することもできます。

同様の記事