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でのみサポートされているようです。
コメントを残す