WooCommerce [マイアカウント]ページで、ログイン時に古いURLにリダイレクトする方法

Last Updated: 2024 年 10 月 21 日 댓글

WordPress WooCommerceのマイアカウントページでログインすると、マイアカウントページに移動するのではなく、古いURLに戻るようにしたい場合があります。 WooCommerce私のアカウントページで、ログイン時に古いURLにリダイレクトする方法を見てみましょう。

WooCommerce [マイアカウント]ページで、ログイン時に古いURLにリダイレクトする方法

WordPress WooCommerceのお支払いページでログインリンクをクリックしてログインすると、お支払いページに戻り、お支払いを続行できるようになります。

ただし、別のページからログインすると、自分のアカウントページに移動するようにデフォルトで設定されています。

WooCommerceのマイアカウントページからログインする場合 ログイン後にマイアカウントページではなくログインする前のページに移動したい場合は、次のコードを使用できます。

/* WooCommerce Login Redirect to Previous URL */
/* This code redirects users to their previous page after logging in, instead of the default WooCommerce account page. */

add_action( 'woocommerce_login_form_end', 'redirect_to_previous_url_on_login' );

function redirect_to_previous_url_on_login() {
    $referrer = wc_get_raw_referer();
    if ( !$referrer || strpos( $referrer, "lost-password" ) !== false ) {
        return;
    }
    $redirect_url = wp_validate_redirect( $referrer, wc_get_page_permalink( 'myaccount' ) );
    echo '<input type="hidden" name="redirect" value="' . esc_url( $redirect_url ) . '" />';
}

上記のコードスニペット チャイルドテーマの関数ファイルに追加してください。 (チャイルドテーマを作成せずに親テーマの関数ファイルにコードを追加すると、今後のテーマの更新時に追加されたコードは消えます。)

コードをテーマ関数ファイルに追加するには、FTPにアクセスするか、 ファイルマネージャ経由でサーバーにアクセスできる必要があります。テーマファイルエディタを有効にする WordPress 管理者ページで編集してもかまいませんが、そのような場合、セキュリティ上安全ではなく、誤って修正するとサイトが詰まることがあります。

上記のコードはFlatsomeテーマでテストされており、他のテーマではテストされていません。 Avada など、ほとんどのテーマで好きなように機能すると思います。もし正しく動作しない場合は、そのテーマと環境を下記のコメントでお知らせください。

他の方法: WooCommerce 決済時のログインページに移動させる

このブログで昨年 WooCommerce お支払い時にログインページに強制的に移動する方法について説明したことがあります。

上記の記事に記載されているコードを使用しても WooCommerceの[マイアカウント]ページで、ログイン時に直接URLに移動するようです。上記の記事に記載されているコードでも試してみることができます。支払い(チェックアウト)ボタンを押すと、強制的にログインページが表示されるようにしたい場合に特に便利です。

WordPress デフォルトのログインページ WooCommerce マイアカウントページに置き換える

以前 WordPress デフォルトのログインURLをUltimate Memberログインページに置き換える方法について説明しました。

上記の記事に記載されているコードを適用して WordPress デフォルトのログインページ WooCommerceのマイアカウントページに置き換えることができます。

/**
 * Replace default WordPress login URL to WooCommerce My Account page
 * @param string $login_url
 * @param string $redirect
 * @return string
 */
function wc_my_account_login_url( $login_url, $redirect ) {
    $my_account_url = wc_get_page_permalink( 'myaccount' );
    if ( $my_account_url ) {
        $login_url = add_query_arg( 'redirect_to', urlencode( $redirect ), $my_account_url );
    }
    return $login_url;
}
add_filter('login_url', 'wc_my_account_login_url', 10, 2);

上記のコードは十分なテストをしていませんが、うまくいくようです。うまくいかない場合 Redirect Login to WooCommerce "My account" Pageという無料のプラグインを使用すると、ログイン時に常に WooCommerceの「マイアカウント」ページが表示されます。

LoginWPプラグイン:ログインして前のページにリダイレクトする

WordPressでログイン/ログアウト後にリダイレクトされるURLを詳細に設定できるプラグインとしてLoginWPがあります。

前のページにリダイレクトする機能は、LoginWP Proでのみサポートされているようです。

参照


コメントを残す

コメント