ログアウト後のWooCommerceリダイレクト[究極のガイド]

公開: 2022-01-10

ログアウト後のWooCommerceリダイレクト ログアウト後のWooCommerceリダイレクトは、この投稿のコードを使用して作成し、ログアウト後にWooCommerceの顧客を特定のページまたは投稿または外部URLにリダイレクトできます。 この記事では、コードを使用してこのリダイレクトを作成する方法を示します。 前のチュートリアルを見逃した場合は、WooCommerceログアウトページのショートコードを作成する方法を説明しました。これは、WooCommerceログアウトリダイレクトを作成する前に開始するのに適した場所です。

WooCommerceのログアウトリダイレクトを作成するために使用できるプラグインがありますが、それらは本来あるべきほど良くはありません。 私は、チェックアウト後のWooCommerceログアウト用に作成したプラグインと同じように、ログアウト後のWooCommerceリダイレクトを管理するのに役立つより良いソリューションに取り組んでいます。

早期採用をご希望の場合は、本日から2週間でプラグインの準備が整うので、リストに追加できるように、私に連絡してください。

この投稿では、効率的なWooCommerceログアウトリダイレクトを作成するために使用できるコードアプローチを共有したいと思いますが、プラグインには、チェックアウトプラグイン後のWooCommerceリダイレクトで実行したデフォルトのリダイレクトオプションを拡張するいくつかの条件付きオプションがあります。

WooCommerceログアウトリダイレクトセクション-スキムしてセクションにスキップ

ほとんどのクライアントプロジェクトでは、ログアウトリダイレクトをWooCommerceサイトで機能させるのに苦労していました。 このため、ログアウトガイドの後にWooCommerceリダイレクトを作成するためのこの究極のガイドをまとめることにしました。

技術に精通したユーザーと技術に精通していないユーザーの両方にとって、プロジェクトに最適なWooCommerceログアウトリダイレクトオプションを作成するためのソリューションを見つけるのに最適な場所になることを願っています。

これは通常のブログ投稿ではないため、長く、詳細を読んで理解するのに時間がかかる可能性があります。 プロジェクトに必要なソリューションをすばやく選択できるように、さまざまなセクションをざっと見ていきたいと思います。

目次

  1. ホームページのリダイレクト–ログアウト後Woocommerceのホームページにリダイレクト
  2. 現在のページのリダイレクト–Woocommerceのログアウトボタンと現在のページへのリダイレクト
  3. IDリダイレクトによる特定のページ–Woocommerceログアウトリダイレクトページ
  4. カスタマーロールリダイレクト–Woocommerceカスタマーログアウトリダイレクト
  5. 前のページのリダイレクト-Woocommerceログイン前のページにリダイレクト
  6. マイアカウントページリダイレクト–Woocommerceマイアカウントログアウトリダイレクト
  7. 外部URLリダイレクト–Woocommerceログアウトリダイレクト機能Phpスニペット
  8. ログアウトリダイレクトエラーの修正–Woocommerceログアウトリダイレクトが機能しない
  9. WPログアウトリダイレクトURL–WoocommerceログアウトURL
  10. Woocommerceログアウトリダイレクトプラグイン
  11. WordPressでのログアウトリダイレクトの作成–コア機能
  12. WooCommerceログインリダイレクト:woocommerce_login_redirectフック
  13. WordPressログアウト関数– wp_logout_url()
  14. WordPressフィルターフックlogout_redirect
  15. WordPressフィルターフックlogin_redirect
  16. ログアウト後のWooCommerceマルチサイトリダイレクト
  17. フィルタフック:allowed_redirect_hosts
  18. WordPressリダイレクト機能:wp_リダイレクト
  19. WordPressリダイレクト関数:wp_safe_redirect()
  20. 結論

ログアウト後のWooCommerceリダイレクト

woocommerceログアウトリダイレクト デフォルトでは、ログアウト、登録、ログイン後のWooCommerceは、ユーザーを「マイアカウント」にリダイレクトします。 この動作は、売り上げの増加を目的としたWebサイトでは特に望ましくありません。

WooCommerceサイトで最も一般的な3つのユーザー管理アクションは次のとおりです。

  • ユーザー登録
  • ユーザーログイン
  • ユーザー登録
  • ユーザープロファイルの編集
  • ユーザーログアウト

これらの各アクションを改善して、ユーザーがスムーズにナビゲートしやすくするだけでなく、新規および既存の顧客の両方の販売見通しを高めることができます。 WoocommerceのログアウトURLまたはリンクはデフォルトで[マイアカウント]ページにあり、ほとんどのWooCommerceストアの所有者は、[マイアカウント]ページのログアウトリダイレクトを変更して、特定のページまたはWooCommerceセールスファネルにリダイレクトしたいと考えています。

マイアカウントページからログアウトをリダイレクトする方法は?

WooCommerceのログアウトに関する最も一般的な質問の1つは、[マイアカウント]ページから自動ログアウトを作成し、別のWebサイトまたは内部ページにリダイレクトする方法です。

これは、この投稿で対処および解決される質問です。このチュートリアルの終わりまでに、コーディングの予備知識がほとんどまたはまったくなくても、カスタムWooCommerceログアウトリダイレクトを快適に作成する必要があります。

ログアウト後のwoocommerceリダイレクトマイアカウントページ

WooCommerceログアウトリダイレクトを作成する理由

優れたeコマースWebサイトは、ログイン、ログアウト、カート、チェックアウト、登録などのすべてのアクションの後に売上とコンバージョンを増やすことができるページにユーザーをリダイレクトするすべての機会を利用する必要があります。

それは、他の製品のクロスセールス、ダウンセールス、および他の関連製品またはベストセラー製品を促進するための優れたWooCommerceセールスファネルを作成することです。

WooCommerceログアウトリダイレクトを使用すると、ログアウト後に顧客をデフォルトの「マイアカウント」ページにリダイレクトする代わりに、販売ランディングページまたは戦略的なWooCommerceファネルリダイレクトページにリダイレクトすることで、販売コンバージョン率を上げることができます。

このチュートリアルでは、ログアウト後にWooCommerceリダイレクトのデフォルト設定を変更し、ユーザーを「セールスファネル」、「特別オファー」、「カタログ」、前のページ、特別なランディングページ、または外部リンクなどのカスタムURLにリダイレクトする方法を示します。売り上げとコンバージョンの増加に適しています。

この投稿では、チェックアウト後にWooCommerceリダイレクトを作成する方法を以前に共有したのと同じように、WooCommerceログアウト後にカスタムリダイレクトを作成する方法に関する簡単なヒントを共有します。 理想的には、デフォルトのWooCommerceログアウトは本来あるべきほどスムーズではありません。 多くのユーザーにとって迷惑な確認メッセージが表示されます。

WooCommerceのログアウト確認メッセージを削除する方法については前に説明しました。これにより、顧客は、コンフォメーションメッセージがポップアップすることなく、WooCommerceサイトから自動的にログアウトできます。

また、条件付きリダイレクトオプションを備えたチェックアウト後のWooCommerceリダイレクトプラグインで行ったように、リダイレクトオプションを追加することで効率を上げるために、このチュートリアルで拡張できるWooCommerceログアウトコードスニペットを共有しました。

WooCommerceログアウトリダイレクトを変更するwoocommerceログアウトリダイレクトを変更する

WooCommerceのログアウトリダイレクトを変更することは、WooCommerceのログアウトリンクをメニューに追加する方法を説明したのと同じように、顧客のログアウトエクスペリエンスのもう1つの重要な改善点です。

それでは、ユーザーエクスペリエンスを向上させるためにストアにすぐに実装できる、最高のWooCommerceログアウトリダイレクトオプションの作成について詳しく見ていきましょう。

ログアウトイベントが発生したときにそれをチェックするためにフィルターを使用する必要があるため、このオプションは単純です。

WooCommerceのログアウトが発生したら、このフックをフックできます– woocommerce_login_redirectは、リダイレクトロジックを使用してコールバック関数を、ログアウト後にユーザーをリダイレクトするページに渡します。

WooCommerceまたはWordPressのアクションフックとフィルターフックに慣れていない場合は、apply_filtersとdo_actionフックに関するこのチュートリアルは、フィルターとフックに慣れるための良い場所になる可能性があります。

WooCommerceログアウトリダイレクト機能の作成を開始する前に、常に良い習慣です。ユーザーがログインしているかどうかを確認する必要があります。次に、WooCommerceログアウトリダイレクトの作成に使用できるさまざまなオプションの概要を説明します。

これらの各関数は、このチュートリアルの他のセクションで詳しく説明されているデフォルトのWooCommerceおよびWordPressアクションフックと関数を使用します。

ホームページのリダイレクト–ログアウト後Woocommerceのホームページにリダイレクト

ログアウト後の最も一般的なWooCommerceリダイレクトの1つは、ホームページへのリダイレクトです。 デフォルトでは、ログアウトが完了すると、WooCommerceはマイアカウントページにリダイレクトします。

ユーザーをホームページにリダイレクトする場合は、アクティブなWooCommerceテーマのfunctions.phpファイルにこのコードを追加することを検討する必要があります。

このコードをテーマのfunctions.phpファイルにコピーし、ログアウト後にWooCommerceユーザーがホームページにリダイレクトされるかどうかをテストします。

ログアウトスニペット後にホームページにリダイレクトする

このコードスニペットをプラグインファイルに追加することもでき、シームレスに機能します。

 add_action( 'wp_logout'、 'njengah_homepage_logout_redirect');

関数njengah_homepage_logout_redirect(){

    wp_redirect(home_url());

    出口;

}

リダイレクトコードのしくみ

上記のコードのように、ログアウト後にWooCommerceリダイレクトを作成するために、このコードで使用される2つの関数と1つのアクションフックがあります。 これらの各関数とフックの役割を鋭く見てみましょう。

フック:wp_logout

このコードは、この記事の– WordPressフック–wp_logoutセクションで詳細に説明されているwp_logoutアクションフックを使用します。 理想的には、これはログアウトが実行された後に起動されるデフォルトのWordPressログアウトフックです。

関数:wp_redirect()

この場合、コールバック関数を見ると、wp_redirect(WordPress関数)セクションでも詳細に説明されているwp_redirect()関数を使用しています。

関数:home_url()

コールバック関数で使用される最後の関数はhome_url()です。これは、現在のサイトのホームページのURLを返すWordPress関数です。

home_url( string $path = '', string|null $scheme = null )

たとえば、次のようにhome_url()関数を使用して、現在のサイトのホームページURLを表示できます。

 $ url = home_url();

エコー$ url;

したがって、この場合、ログアウト後のWooCommerceリダイレクトは、現在のサイトURLを返し、それを文字列としてwp_redirect()関数に追加します。

WooCommerceログアウトリダイレクトフックがコードに適用されるときにどのように機能するかを理解するには、これらのデフォルトのWordPress関数のそれぞれと、リダイレクトの作成でそれらが果たす役割を確認する必要があります。

現在のページのリダイレクト–Woocommerceのログアウトボタンと現在のページへのリダイレクト

ログアウト後2番目に一般的なWooCommerceリダイレクトは、ユーザーがログアウトした後の現在のページへのリダイレクトです。 これは、ユーザーがログアウトしたときと同じページに留まりたい場合に重要です。

この場合、現在のユーザーのページを知り、それをWooCommerceログアウトリダイレクトロジックに適用する必要があります。

ログアウトイベント後に現在のページへのWooCommerceリダイレクトを作成するには、 get_permalink()関数を使用して現在のページを通知し、それをログアウトコールバック関数に適用する必要があります。

この場合、次のコードスニペットをfunctions.phpまたはプラグインファイルに追加して、現在のページにログアウトした後にWooCommerceリダイレクトを実行する必要があります。

 関数njengah_redirect_current_page_after_logout($ logout_url、$ redirect){

       $ logout_urlを返します。 '& redirect_to ='。 get_permalink();

}

add_filter( 'logout_url'、 'njengah_redirect_current_page_after_logout'、10、2);

コードのしくみ

このコードはフィルターフックlogout_urlで構成され、コールバック関数にはget_permalink() WordPress関数があり、フロントエンドユーザーの現在のページを確立し、それを使用してログアウトURLを返します。

フィルタ:logout_url()

この場合、WordPress関数logout_urlの下のセクションで詳細に説明されているもう1つのコアWordPressおよびWooCommerceログアウトフィルターであるlogout_urlを使用しました

このコードはすべてのユーザーに対して機能するとは限らず、管理バックエンドのユーザーに対しては失敗する可能性があります。 これは、[マイアカウント]ページの顧客のログアウト後の適切なリダイレクトですが、他の役割の場合は適切ではありません。

バックエンドのユーザーでも機能させるには、 get_permalink()関数を現在のページを表すHTTPクエリ値に置き換える必要があります。

PHPスーパーグローバル$ _SERVER ['HTTP_HOST']

したがって、その場合、 get_permalink()関数の代わりに、この$ _SERVER ['HTTP_HOST']スーパーグローバルを追加する必要があります。 $_SERVERは、ヘッダー、パス、およびスクリプトの場所に関する情報を含むPHPスーパーグローバル変数です。

$_SERVER['HTTP_HOST']スーパーグローバルは、現在のリクエストからHostヘッダーを返します。 したがって、現在のページを取得して、ログアウト後にWooCommerceリダイレクトURLに適用できるようにするのに役立ちます。すべてのユーザーに有効な新しいコードは、次のようになります。

 関数njengah_redirect_current_page_after_logout($ logout_url、$ redirect){

      $ logout_urlを返します。 '& redirect_to = http://'。 $ _SERVER ['HTTP_HOST']。 $ _SERVER ['REQUEST_URI'];

}

add_filter( 'logout_url'、 'njengah_redirect_current_page_after_logout'、10、2);

これで、WooCommerceログアウトボタンの作成方法について以前に共有したチュートリアルに従って、リダイレクトリンクをまとめるボタンを作成できます。

特定のページリダイレクト– Woocommerceログアウトリダイレクトページ(ID別)

場合によっては、ログアウト後にユーザーを特定のページにリダイレクトしたいことがあります。 ページIDを使用して、ページをWooCommerceログアウトリダイレクトロジックに追加できます。

この場合、リダイレクト機能で渡すためにページIDを知っている必要があります。 次のコードスニペットを使用して、IDによって特定のページへのWooCommerceログアウトリダイレクトを実現できます。

 add_action( 'wp_logout'、 'njengah_specific_page_logout_redirect');

関数njengah_specific_page_logout_redirect(){

    wp_redirect(get_permalink($ pageId));

    出口;

}

コードのしくみ

このコードはwp_logoutアクションフックを使用し、コールバック関数には変数$pageIDを持つget_permalink()関数があります。これは、チェックアウト後にユーザーをリダイレクトするページのIDに置き換える必要があります。

ページIDがわからない場合は、WordPressでページIDを取得する方法について書いたこの投稿を使用できます。

WooCommerce関数:wc_get_page_id()

以下のコードスニペットのように、ユーザーをリダイレクトするページの名前をwc_get_page_id() WooCommerce関数と一緒に使用することもできます。

 add_action( 'wp_logout'、 'njengah_specific_page_logout_redirect');

関数njengah_specific_page_logout_redirect(){

       wp_redirect(get_permalink(wc_get_page_id( 'shop')));

      出口;

}

wc_get_page_id()関数はページIDを取得し、myaccount、edit_address、shop、cart、checkout、pay、view_order、termsに一般的に使用され、ページが見つからない場合は-1を返します。

カスタマーロールリダイレクト–Woocommerceカスタマーログアウトリダイレクト

ログアウト後のもう1つのWooCommerceリダイレクトは、役割に基づいてユーザーをリダイレクトする場合です。 ログアウト後のデフォルトのマイアカウントリダイレクトではなく、ログアウト後に顧客を特定のページにリダイレクトすることをお勧めします。

この場合、以下で共有するコードスニペットを使用して、顧客の役割のみ、別の役割、または役割のグループのログアウト後にリダイレクトを実行できます。

 if(is_user_logged_in()){//ログインしているユーザーがいるかどうかを確認する       

    $ user = wp_get_current_user(); //現在のユーザーの取得と設定

          $ roles =(配列)$ user-> roles; //役割を取得する

           // $ roles [0]; // 1つの役割を返します

            // $ rolesを返します; //ロールの配列を返します

             //ここで比較します 

              if($ roles [0] == '顧客'){

                 //現在のユーザーの役割がcustomerと等しい場合は、リダイレクトを実行します

                    add_action( 'wp_logout'、 'njengah_specific_page_logout_redirect');

                       関数njengah_specific_page_logout_redirect(){

                        wp_redirect(get_permalink($ pageId));

                             出口;

                   }

           }

 }

コードのしくみ

WordPressユーザーがログインしているかどうかを確認する方法についての以前の投稿で説明したように、ユーザーがログインしているかどうかを確認することから始めました。

ユーザーロールを取得する

2番目のステップは、 wp_get_current_user()関数を使用して、WordPressで現在のユーザーの役割を取得し、現在のユーザーの役割を厳密にすることでした。

役割が顧客と一致する場合のリダイレクトを比較して実行する

3番目のステップは、前のステップで取得したロールを顧客のロールと比較することです。ロールが一致する場合は、リダイレクトアクションと関数を追加します。

この役割を、カスタム役割を含む別の他の役割に置き換えることができます。 get_permalink()関数で別のページIDを渡すことにより、リダイレクトページを変更することもできます。

前のページのリダイレクト-Woocommerceログアウト前のページにリダイレクト

セッションを使用して前のページにログアウトした後、WooCommerceリダイレクトを作成できます。 この場合、セッションを作成して関数に追加し、ロジックで使用して、前のページへのログアウト後にリダイレクトを作成する必要があります。

以下のコードスニペットを使用して、前のページへのWooCommerceログアウトリダイレクトを作成できます。

 //リファラーURLを保存するためのグローバルセッションを開始します
関数start_session(){
     session_start();
}

add_action( 'init'、 'start_session'、1);

//リファラーURLを取得して保存します

関数redirect_url(){
    if(is_user_logged_in()){
        $ _SESSION ['referer_url'] = wp_get_referer();
    } それ以外 {
        session_destroy();
    }

}
add_action( 'template_redirect'、 'redirect_url');

//ログアウトリダイレクト

関数njengah_logout_redirect(){

    if(isset($ _ SESSION ['referer_url'])){

        wp_redirect($ _ SESSION ['referer_url']);

    } それ以外 {

        wp_redirect(home_url());

    }

}

add_filter( 'wp_logout'、 'njengah_logout_redirect'、1100、2);

コードのしくみ

このコードは、PHPセッションを使用してセッションを作成し、現在のページURLを保存し、リダイレクト関数で設定されたセッションURL – $_SESSION['referer_url']をテストします。

設定されている場合は、前に説明した他のログアウトリダイレクトと同様に、そのページへのリダイレクトを作成します。

マイアカウントページリダイレクト–Woocommerceマイアカウントログアウトリダイレクト

[マイアカウント]ページからのWooCommerceログアウトリダイレクトは、WooCommerceログアウトに関して最もよく寄せられる質問の1つです。

これは他のログアウトリダイレクトと同じです。実際、以下のコードスニペットを使用して[マイアカウント]ページにログアウトリダイレクトを追加できます。

 add_action( 'wp_logout'、 'njengah_my_account_page_logout_redirect');

関数njengah_my_account_page_logout_redirect(){

       wp_redirect(get_permalink($ pageId));

                出口;

}

get_permalink()関数の$pageID変数の値を変更して、リダイレクトページまたは投稿のページIDに対応させることができます。これは、シームレスに機能します。

外部URLリダイレクト-Woocommerceログアウトリダイレクト機能Phpスニペット:

ユーザーがWooCommerceストアからログアウトした後、ユーザーを外部URLにリダイレクトする場合は、テーマの機能に追加されたスニペットまたはカスタムプラグインを使用してこれを実行できます。

ログアウト後にリダイレクトを作成するためにfunctions.phpファイルに追加できるこのWooCommerceログアウトリダイレクト関数phpスニペットは次のとおりです。

 add_action( 'wp_logout'、 'njengah_redirect_after_logout');

関数njengah_redirect_after_logout(){

  wp_redirect($ url);

  出口();

}

このコードスニペットをfunctions.phpに追加し、 $url変数を引用符で囲んだそれぞれのリダイレクトURLに置き換えるだけです。

たとえば、ログアウト後にユーザーを外部URLにリダイレクトする場合、外部URLがhttp://example.comの場合、次のコードのように$url変数を完全なURLに置き換えることができます。

 add_action( 'wp_logout'、 'njengah_redirect_after_logout');

関数njengah_redirect_after_logout(){

    wp_redirect( 'http://example.com');

    出口();

}

WPログアウトリダイレクトURL–WoocommerceログアウトURL

WooCommerceのログアウトボタンを作成してカスタムテンプレートまたは他のページに配置する場合は、ボタンやリンクに簡単に追加できるWPログアウトリダイレクトURLを知るのに役立ちます。

以下は、パラメータ「my-account」を変更することで他のページに変更できるWPログアウトリダイレクトURLです。

 wp_logout_url(

    get_permalink(wc_get_page_id( 'myaccount'))

 );

次のように、WooCommerceログアウトリダイレクトURLに外部URLを含めることもできます。

 wp_logout_url(

   'http://example.com/'

);

次のように、WordPress関数をWPログアウトリダイレクトURLに追加することもできます。

 wp_logout_url(

    home_url()

);

このWPログアウトリダイレクトURLは、カスタムテンプレートに追加できます。また、ショートコードやボタンで使用して、ウィジェット、フッター、トップバーメニューなど、ログアウトボタンのデフォルトの場所ではない場所にログアウトオプションを表示することもできます。

ログアウトリダイレクトエラーの修正:Woocommerceログアウトリダイレクトが機能しない

WooCommerceログアウトリダイレクトをカスタマイズしても機能しない場合は、コードにバグがあるか、次のいずれかの理由が考えられます。

フックの優先度

最初のステップは、他のWordPressフックと比較したadd_action add_action()またはadd_filter() )の優先度を確認することです。 これは、ログアウトリダイレクトエラーの最も一般的な原因の1つです。

フックの優先度が高いほど、ロードが早く発生します。 2つのフックの優先度が同じである場合、一方が他方の上部に配置されているものが最初にロードされます。 アクションまたはフィルターフックの優先度を調整することは、デバッグを開始するのに適した場所です。

コードエラー–構文エラー

すべてのコードにエラーがあり、一般的なエラーが構文エラーであるかどうかを確認する必要がある2番目のステップ。 おそらく、コードを編集するときに、閉じ引用符または角かっこを配置するのを忘れることがあります。

コードをカウンターチェックし、できればコードをPHP構文エラーチェッカーに追加します。

Visual StudioなどのツールやNetbeansなどのIDEに精通している場合は、これらのツールを使用すると、コード内の構文エラーをすばやく選択できるため、最適です。

間違ったファイルに追加されたコード

WooCommerceログアウトリダイレクトが機能しないというエラーのもう1つの一般的な原因は、正しいコードを持っていても、間違った場所に追加した場合です。 この場合、テーマにコードを追加する場合は、functions.phpファイルに厳密に追加する必要があります。

このコードをプラグインに追加するときは、インスタンス化されていないクラス内にコードを追加しないように注意する必要があります。 プラグインベースファイルに追加し、コードがカスタムプラグインファイル構造のコンテキストに適合するようにするために必要となる可能性のある変更を修正することをお勧めします。

プラグインまたはテーマの競合

ほとんどの場合、WooCommerceのログインとログアウトのリダイレクトを制御するプラグインまたはテーマがあります。 これらのプラグインは競合して、ログアウトリダイレクトエラーを引き起こす可能性があります。

WooCommerceリダイレクトログアウトエラーが発生している場合は、すべてのプラグインを非アクティブ化し、デフォルトのWordPressテーマを使用して、プラグインまたはテーマの競合が原因でエラーが発生していないかどうかを確認することから始めます。

Woocommerceログアウトリダイレクトプラグイン

最後に、適切な機能、優れたユーザーエクスペリエンス、ワールドクラスのサポートを備えた適切にコーディングされたプラグインほど、ログアウト後にWooCommerceリダイレクトを簡単に追加できるものはありません。 何年もの間、私はWooCommerceとWordPress全般で、何百ものログアウト、ログイン、登録の問題を修正してきました。

ここ数週間で、WooCommerceのリダイレクトとログアウトについて学んだすべての経験と教訓をまとめました。 次の機能で構成される、注目に値するWooCommerceログアウトリダイレクトURLを作成しました。

ログアウトリダイレクト機能

  • ログアウト後、WooCommerceは任意のページにリダイレクトします–ドロップダウンリストからページを選択します
  • ログアウト後、WooCommerceは任意の単一の製品にリダイレクトします–ドロップダウンリストから製品を選択します
  • ログアウト後、WooCommerceは任意の単一の投稿にリダイレクトします–ドロップダウンリストから投稿を選択します
  • ログアウト後、WooCommerceは任意の製品カテゴリにリダイレクトします–ドロップダウンリストから製品カテゴリを選択します
  • ログアウト後、WooCommerceは現在のページにリダイレクトします
  • ログアウト後、WooCommerceは前のページにリダイレクトします
  • ログアウト後のWooCommerceリダイレクトは外部URLに
  • ロールに基づいてログアウト後にWooCommerceリダイレクト
  • 購入履歴に基づいてログアウトした後のWooCommerceリダイレクト(特別オファーに適しています)
  • WooCommerceはチェックアウト後に強制的にログアウトします

ログインリダイレクト機能

  • 任意のページにログインした後のWooCommerceリダイレクト–ドロップダウンリストからページを選択します
  • 単一の製品にログインした後のWooCommerceリダイレクト–ドロップダウンリストから製品を選択します
  • 単一の投稿にログインした後のWooCommerceリダイレクト–ドロップダウンリストから投稿を選択します
  • 任意の製品カテゴリにログインした後のWooCommerceリダイレクト–ドロップダウンリストから製品カテゴリを選択します
  • 現在のページにログインした後のWooCommerceリダイレクト
  • 前のページにログインした後のWooCommerceリダイレクト
  • 外部URLにログインした後のWooCommerceリダイレクト
  • ログイン後のWooCommerceリダイレクトはロールに基づいています
  • 購入履歴に基づいたログイン後のWooCommerceリダイレクト(特別オファーに適しています)

Login&Logout(WRAL)プラグイン後のWooCommerceリダイレクトは、今後数週間でリリースされる予定です。 アーリーアダプターになりたい場合は、発売時に70%オフの割引が適用されるため、取り残されないでください。

すぐに私に連絡することで、最初の100人のアーリーアダプターのリストに参加できます。 2020年11月2日にリリースされる予定です。

WordPressでのログアウトリダイレクトの作成–コア機能

ログアウト後にWooCommerceリダイレクトを作成するためのスニペットを追加する簡単な方法を確認した後、デフォルトのWordPressログアウト関数とフックを強調し、このガイドを読んでいる開発者がこれらのリダイレクトがどのように機能するかを理解するために詳細に説明するのに役立ちます。

これらの関数とアクションフックは、ログアウト後にWooCommerceリダイレクトを作成するのに役立ちます。 一般に、次のフックと関数を使用してWooCommerceログアウトリダイレクトを作成できます。

  • wp_logout_url()関数
  • wp_logoutアクションフック
  • logout_redirectフィルター

これらの各関数と、それを使用してチェックアウト後にWooCommerceリダイレクトを作成する方法と、どちらか一方を使用する理由について説明します。

フィルタを使用してWooCommerceログインリダイレクトを作成する方法を強調することも重要です。 WooCommerceでもログインリダイレクトを作成するのに便利な機能があります。 WooCommerceでログインリダイレクトを作成するのに非常に便利なログインリダイレクトフックから始めましょう。

WooCommerceログインリダイレクト:woocommerce_login_redirectフック

これは、WooCommerceのログインリダイレクト機能を制御できる特別なWooCommerceフックです。 これは、ログアウト後にWooCommerceリダイレクトを作成する際に適用されるデフォルトのWordPressログアウト機能に似ています。 その基本的な使用法は次のとおりです。

apply_filters( 'woocommerce_login_redirect', $redirect, $user );

ご覧のとおり、2つのパラメーターが必要で、パラメーターは次のとおりです。

パラメータ説明使用例
$redirect これは、ログイン後にユーザーがアクセスするリダイレクトページです。

ログイン後にデフォルトのWooCommerceリダイレクトを変更して、ユーザーがログイン後に特定のページに移動できるようにする場合に便利です。

add_filter('woocommerce_login_redirect', 'login_redirect')

フィルタフックを追加し、コールバック関数で次のようにリダイレクトロジックを渡すことができます。

function login_redirect($redirect_to){
return home_url();
}

ご覧のとおり、パラメーター$ redirect_toを追加し、ログイン後にユーザーをホームページにリダイレクトするためのリダイレクトURLを返しました。

$user これは、リダイレクトアクションが適用されるユーザーです。

これは、特定のユーザーのログイン後にリダイレクトを作成する場合に特に便利です。

フック:woocommerce_login_redirectが機能しない

このコードはテーマとプラグインコードで使用できますが、 woocommerce_login_redirectが機能しないという一般的なシナリオにつながる、早い段階または遅い段階での起動を回避するための優先順位を理解する必要があります。

また、 woocommerce_login_redirectが機能しない原因となる可能性のある他の理由を見つける必要があります。 特に興味深いのは、コードが起動される前に機能する同様または同じ機能を持つ別のプラグインです。

したがって、 woocommerce_login_redirectが機能していないことがわかった場合、最初に確認するのは、次の2つのコードスニペットがある場合の例の優先度です。

#優先度を下げる

add_filter( 'woocommerce_login_redirect', 'njengah_login_redirect', 1100, 2 );

#優先度が高い

add_filter( 'woocommerce_login_redirect', 'njengah_login_redirect', 10, 2 );

どちらの場合も優先度の数値が異なることがわかるように、基本的なルールは、数値が小さいほど優先度が高くなることです。つまり、最初にロードされます。

この機能をテーマまたは別のプラグインの他の場所で使用していて、ログインまたはログアウト機能の後にWooCommerceリダイレクトを再作成しようとしている場合は、優先度に注意を払う必要があります。 これは、 woocommerce_login_redirectが機能しない問題を修正するためのソリューションです。

WordPressログアウト関数– wp_logout_url()

この関数は、WordPressでログアウトURLを作成する役割を果たします。

これは、開発者とWordPressユーザーがリンクまたはボタンに追加できるログアウトURLをすばやく作成するのに役立ちます。この記事では、WooCommerceログアウトURLを作成する方法について説明しました。

WooCommerceは、開発者とユーザーがコーディングなしでWooCommerceログアウトページを作成するのを支援する上で重要な役割を果たすURLエンドポイントを持つことにより、機能を拡張します。

WooCommerceとWordPressのログアウトプロセスを深く理解したい場合は、 wp_logout_url()関数を評価することから始めると役立ちます。

これは、いくつかのWordPressテーマとプラグインで遭遇する特別な機能であり、内部で何が起こっているのかを垣間見ることをお勧めします。

関数の基本的な使用法は次のとおりです。

wp_logout_url( string $redirect = '' )

ご覧のとおり、関数は文字列である1つのパラメーターを取り、パラメーターの詳細は次のとおりです。

パラメータ説明使用例
$redirect これは文字列パラメータであり、追加するかどうかはオプションです。空白のままにすると、関数が機能します。

ただし、特定のページにリダイレクトURLを追加する場合に便利です。

したがって、この場合、 $redirectパラメーターはリダイレクトページのURLであり、このコンテキストでこの関数を使用するすべてのユーザーがアクセスする宛先です。

wp_logout_url()は文字列のみをパラメータとして受け取るため、他の関数を厳密に文字列を返すパラメータとして渡すこともできます。

この関数は、次のようなリンクとともに使用できます。

<a href="<?php echo wp_logout_url(); ?>">Logout</a>

この関数を使用して、次のようにリダイレクトURLの文字列を返すパラメーターとして別の関数を渡すことができます。

<a href="<?php echo wp_logout_url( home_url() ); ?>">Logout</a>

<a href="<?php echo wp_logout_url( get_permalink() ); ?>">Logout</a>

関数をさらに理解したい場合は、WordPressコアで定義されたコードを確認すると役立ちます。 このコア機能コードは次のとおりです。

 function wp_logout_url($ redirect = ''){
    $ args = array();
    if(!empty($ redirect)){
        $ args ['redirect_to'] = urlencode($ redirect);
    }
 
    $ logout_url = add_query_arg($ args、site_url( 'wp-login.php?action = logout'、 'login'));
    $ logout_url = wp_nonce_url($ logout_url、 'log-out');
 
    / **
     *ログアウトURLをフィルタリングします。
     *
     * @since 2.8.0
     *
     * @param string $ logout_urlHTMLでエンコードされたログアウトURL。
     * @param string $ redirectログアウト時にリダイレクトするパス。
     * /
    apply_filters( 'logout_url'、$ logout_url、$ redirect);を返します。
}

アクションフック:wp_logout

これは、ユーザーがログアウトしたときに発生するアクションフックです。 ログアウト後のリダイレクト機能を作成する上で重要な役割を果たします。この機能の基本的な使用法は次のとおりです。

do_action( 'wp_logout', int $user_id )

ご覧のとおり、1つのパラメーターを取り、パラメーターの詳細は次のとおりです。

パラメータ説明使用例
$user_id ログアウトしたユーザーのIDです。 add_action('wp_logout','logout_redirect');

この場合、アクションフックとして追加し、次のようにコールバック関数のログアウトロジックの後にリダイレクトを渡すことができます。

function logout_redirect(){

wp_redirect( home_url() );

exit;

}

したがって、この場合、ログアウト後にユーザーをホームページにリダイレクトします。

これらの関数は、ユーザーがログインまたはログアウトした後のユーザーのリダイレクトを制御する場合に役立ちます。

WordPressフィルターフックlogout_redirect

WooCommerceでログアウトした後にリダイレクトを作成するために使用できるもう1つのフィルターフックは、フィルターフックlogout_redirectです。 このフィルターフックは、 wp_logout_url()関数またはwp_logoutアクションフックのように機能します。

これは、ログアウト後にWordPressまたはWooCommerceリダイレクトを作成するのに役立つように設計された基本的なWordPressフィルターです。 その基本的な使用法は次のとおりです。

apply_filters( 'logout_redirect', string $redirect_to, string $requested_redirect_to, WP_User $user )

ご覧のとおり、3つのパラメーターがあり、パラメーターは次のように詳細に説明できます。

パラメータ説明
$redirect_to これはリダイレクト先のURLであり、文字列である必要があります(例:http://example.com)。
$requested_redirect_to これは、パラメーターとして渡される要求されたリダイレクト先URLであり、最初のパラメーターと同様に文字列である必要があります。
$user これはユーザーオブジェクトです–ログアウトしたユーザーのWP_Userオブジェクト。

次のようにlogout_redirectを使用して、ログアウト後にフィルターベースのWordPressリダイレクトを作成できます。

 add_filter( 'login_redirect'、 'njengah_logout_redirect'、10、3);

function njengah_logout_redirect($ location、$ request、$ user){

  グローバル$ user;

if(isset($ user-> roles)&& is_array($ user-> roles)){

   if(in_array( 'subscriber'、$ user-> roles)){

       home_url();を返します。

          } それ以外 {

        $ redirect_toを返します。

      }

    }

   戻る;

}

WordPressフィルターフックlogin_redirect

ログインにも同様のフィルターがあることを指摘することも重要です。login_redirectは、logout_redirectフィルターと同じように機能します。 実際、使用法は似ており、3つのパラメーターが付属しており、一般的な式は次のとおりです。

apply_filters( 'login_redirect', string $redirect_to, string $requested_redirect_to, WP_User|WP_Error $user )

The parameters are similar expect the last parameter that has two user object options as you will see in the detailed description below:

パラメータ説明
$redirect_to This is the redirect destination URL and it must be a string, for example, http://example.com
$requested_redirect_to This is the requested redirect destination URL that is passed as a parameter and it must also be a string just like the first parameter.
$user This is the user object – WP_User object of the user who has been logged in if the login was successful but for unsuccessful login the WP_Error object is represented by this parameter

As you can see there are several ways you can use to create a WordPress or WooCommerce logout redirect.

In a quick summary we have highlighted the three most important hooks you should consider using for creating the redirect after logout. These hooks include:

  • Default WordPress logout_redirect – using filter to create redirect after logout
  • Action hook wp_logout – fired after the logout and thus can be used to create redirect.
  • WordPress logout function wp_logout_url() – WordPress default function that retrieves the logout URL and this can be useful in adding a redirect since it takes one parameter for the redirect path.

WooCommerce Multisite Redirect After Logout

When you are creating a redirect after logout in WooCommerce the wp_logout hook may fail to work when you have a multisite. In this case you need a little creativity to control how to create the WooCommerce redirect after logout.

In fact in a multisite set up WordPress logout function requires you to filter the allowed URLs for redirect and this can easily be executed using the allowed_redirect_hosts filter.

It helps to understand how this filter hook works so that you can use it in the WooCommerce multisite redirect after checkout. So let's briefly look at this filter.

Filter Hook: allowed_redirect_hosts

This is a filter hook that filters all the allowed hosts to apply redirect to. So in simple terms it checks the redirect URLs and vets them. The basic usage of this filter is as follows:

apply_filters( 'allowed_redirect_hosts', string[] $hosts, string $host )

As you can see in the expression above, it takes two parameter and they can be explained in details as follows:

パラメータ説明Usage Example(s)
$hosts (string[]) This is simply an array with all the allowed host names add_filter( 'allowed_redirect_hosts', 'njengah_allow_parent_redirect' );

function njengah_allow_parent_redirect( $allowed ) {

$allowed[] = 'example.com'; // Multisite parent

return $allowed;

}

<a href="<?php echo wp_logout_url( 'http://example.com' ); ?>">Logout</a>

$host (string) This is the host name of the redirect destination.

This can be left empty.

You can add more hosts to the callback function and come up with code like this:

add_filter( 'allowed_redirect_hosts'、 'njengah_allow_parent_redirect');

function njengah_allow_parent_redirect($ allowed){
    $ allowed = array(
    'blog.example.com'、
    'codex.example.com'、
     );
    array_merge($ hosts、$ allowed);を返します。
}

ほとんどの場合、デフォルトのwp_logoutリダイレクトはリダイレクトホストのフィルタリングなしで失敗するため、これは、ログアウト後にマルチサイトWooCommerceリダイレクトに重要な追加である許可されたリダイレクトURLを検証する目的を単に果たします。

WordPressリダイレクト機能:wp_リダイレクト

WooCommerceでチェックアウト後にリダイレクトを作成する方法についての投稿で説明したように、WooCommerceまたはWordPressでリダイレクトを作成する場合は、 wp_redirect()関数が必要です。

この関数の役割を理解することは、チェックアウト後にWooCommerceリダイレクトを作成する上で非常に重要です。これは、WordPressとWooCommerceでリダイレクトを実行するためのコア関数であるためです。 それがどのように機能するか、そしてそれが取るパラメータについて簡単に概説しましょう。 wp_redirect()関数の一般的な使用法は次のとおりです。

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

ご覧のとおり、この関数は3つのパラメーターを取り、次のように詳細に説明できます。

パラメータ説明
$location これは、ユーザーをリダイレクトするパスまたはURLです。 文字列である必要があり、関数が機能するために必要です。
$status これは、このリダイレクトに適用する必要があるHTTP応答ステータスコードです。これは整数であり、オプションで使用できます。
たとえば、永続的なリダイレクト用に301を追加することも、一時的に移動することを意味するデフォルト値である302のままにすることもできます。
$x_redirect_by これはリダイレクトを実行しているアプリケーションであり、これはデフォルトでWordPressであり、WordPressのコンテキスト内でログアウト後にWooCommerceリダイレクトを作成しているため、設定が解除されることはめったにありません。

ノート

wp_redirect()関数を使用している場合、titはそれ自体では終了しないことを理解することが重要です。 したがって、PHPのexitは、前のコード行が実行された後に現在実行中のスクリプトを終了するために使用されるため、関数の後に常にexitを追加することが重要です。 したがって、 wp_redirect関数を使用する最良の方法は次のとおりです。

 wp_redirect($ url);

出口

次のように、 if statementでwp_redirect関数を使用して条件付きリダイレクトを作成することもできます。

 if(wp_redirect($ url)){

   出口;

}

この関数は、以下のコードのように、 template_redirectフックと一緒に使用できます。

 関数njengah_wp_redirect_example(){

    if(is_user_logged_in()&& is_page($ id)){

        wp_redirect(get_permalink($ id));

        出口;

    }

}

add_action( 'template_redirect'、 'njengah_wp_redirect_example');

上記のコードでわかるように、 get_permalink( )関数の場合のように、関数が$ locationパラメーターの文字列を返す場合は、関数をパラメーターとして受け取ることができます。

WordPressリダイレクト関数:wp_safe_redirect()

wp_safe_redirect()は、ログアウト後にWooCommerceリダイレクトを実行するのに役立つ2番目のWordPressリダイレクト関数です。この関数はwp_redirect()関数と同様に機能しますが、リダイレクトURLの追加の検証があります。

wp_redirect関数では、$ locationパラメーターは検証されませんが、 wp_safe_redirect()関数では、 $locationパラメーターがチェックされ、許可されたホストであるかどうかが確認されます。

これが2つのリダイレクト機能の違いです。 このリダイレクト関数の一般的な使用法はwp_redirectの使用法と同様であり、一般的な式は次のとおりです。

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

ご覧のとおり、パラメータは同じです。

パラメータ説明
$location これは、ユーザーをリダイレクトするパスまたはURLです。 文字列である必要があり、関数が機能するために必要です。
$status これは、このリダイレクトに適用する必要があるHTTP応答ステータスコードです。これは整数であり、オプションで使用できます。
たとえば、永続的なリダイレクト用に301を追加することも、一時的に移動することを意味するデフォルト値である302のままにすることもできます。
$x_redirect_by これはリダイレクトを実行しているアプリケーションであり、これはデフォルトでWordPressであり、WordPressのコンテキスト内でログアウト後にWooCommerceリダイレクトを作成しているため、設定が解除されることはめったにありません。

この関数を使用すると、プラグイン開発者は許可されたホストのリストを設定または削除できます。ホストが許可されたホストのリストにない場合、リダイレクトは失敗し、デフォルトでwp-adminになります。

wp_redirect関数と同様に、 wp_safe_redirectは自動的に終了せず、以下のコードスニペットのように終了を追加する必要があります。

 wp_safe_redirect($ url);

出口;

前の例のように、条件付きステートメントで使用することもできます。

 if(wp_safe_redirect($ url)){

    出口;

}

結論

この投稿では、ログアウトオプションの後にさまざまなWooCommerceリダイレクトを作成する方法を段階的に概説しました。 コード例を使用して、WordPressコアから利用可能なさまざまな関数とフックを使用してWordPressまたはWooCommerceリダイレクトログアウトを作成する方法を説明しました。

私たちがカバーしたことを要約するための簡単な要約で; ログアウト後にリダイレクトを作成する方法:

  • 現在のページのログアウトリダイレクト
  • 前のページのログアウトリダイレクト
  • ホームページのログアウトリダイレクト
  • 特定のページのログアウトリダイレクト
  • 外部URLログアウトリダイレクト

このガイドが、WooCommerceでログアウトリダイレクトを作成する際の出発点として最適であることを願っています。 フィードバックを共有したり、このガイドの改善に貢献したり、間違いやエラーを指摘したりしたい場合は、遠慮なく私に連絡してください。 このガイドが気に入った場合は、購入後にWooCommerceリダイレクトを作成する方法について私が書いた他のガイドも確認してください。

同様の記事

最高のWooCommerceプラグインリスト