将访客从 WooCommerce 结帐重定向到我的帐户登录,并在登录后返回结帐

问题描述 投票:0回答:1

我使用以下代码(粘贴在我的主题functions.php 文件中)将未登录的用户从结帐页面重定向到 WooCommerce 我的帐户登录表单:

add_action( 'template_redirect', 'redirect_to_specific_page' );
function redirect_to_specific_page() {
    if ( is_page('finalizar-compra') && ! is_user_logged_in() ) {
        wp_redirect( 'https:/miweb.pe/login', 301 );
        exit;
    }
}

用户登录后,如何将其重定向回之前的 URL?

此处,之前的 URL 为:

https://miweb.com/finalizar-compra

我尝试过使用

https://miweb.pe/login/?redirect_to=https://miweb.pe/finalizar-compra
,但不起作用。

php wordpress authentication woocommerce checkout
1个回答
0
投票

在 WooCommerce 结帐中,您可以直接登录,无需任何重定向,但需要从 WooCommerce 设置 > 帐户和隐私 > 启用该选项 客人结账:

enter image description here

然后在结帐页面您将看到类似以下内容:

enter image description here

现在,如果您希望进行重定向,请尝试以下模块化且完整的代码,以在用户登录后重定向用户,从我的帐户返回到结帐 URL:

add_action( 'template_redirect', 'redirect_to_specific_page' );
function redirect_to_specific_page() {
    $is_checkout_page = is_checkout() && !is_wc_endpoint_url();

    if ( !is_user_logged_in() && $is_checkout_page ) {
        global $wp;

        $redirect_to = '/?redirect_to=' . urlencode( site_url( $wp->request ) );
        
        wp_redirect( get_permalink( get_option('woocommerce_myaccount_page_id')) . $redirect_to );
        exit();
    }
}

代码位于子主题的functions.php文件中(或插件中)。

© www.soinside.com 2019 - 2024. All rights reserved.