首页 > 解决方案 > 我在functions.php文件中添加了将用户从WP登录页面转移到Woocomerce登录页面的代码,但现在登录后出现空白屏幕

问题描述

我正在使用 OceanWP 主题和 WP-job-manager 和 woocommerce 插件构建一个 WordPress 网站。

由于许多 WP-job-manager 链接将用户转移到默认的 Wordpress 登录页面,我希望所有用户都使用 woocommerce 登录页面登录,因此我将以下代码添加到我的 functions.php 文件中:

/**
* direct users to woocommerce login page
*/

add_filter( 'login_url', 'my_login_page', 10, 2 );
function my_login_page( $login_url, $redirect ) {
    return home_url( '/my-account/?redirect_to=' . $redirect );
}

/** Log in redirect to previous page by logicdigger **/
// start global session for saving the referer url
function start_session() {
    if(!session_id()) {
        session_start();
    }
}
add_action('init', 'start_session', 1);

// get the referer url and save it to the session
function redirect_url() {
    if (! is_user_logged_in()) {
        $_SESSION['referer_url'] = wp_get_referer();
    } else {
        session_destroy();
    }
}
add_action( 'template_redirect', 'redirect_url' );

//login redirect to referer url
function login_redirect() {
    if (isset($_SESSION['referer_url'])) {
        wp_redirect($_SESSION['referer_url']);
    } else {
        wp_redirect(home_url());
    }
}
add_filter('woocommerce_login_redirect', 'login_redirect', 1100, 2);

它似乎运作良好,并将所有用户转移到 woocommerce 登录页面,但我遇到的问题是,当用户使用 woocommerce 登录页面登录时,即使 URL 是“www.mywebsite.com/”,他们也会得到一个空白屏幕我的帐户”,这是我的帐户页面的正确 URL。

...但是当我刷新页面时,页面会重定向到用户之前所在的页面,这就是我希望它的工作方式。

我只是想知道登录后可能导致空白屏幕的原因是什么?

我已清除缓存并重试,但同样的事情发生了。我真的不知道是什么原因造成的。

提前谢谢了。

标签: phpwordpresswoocommerce

解决方案


...但是当我刷新页面时,页面会重定向到用户之前所在的页面,这就是我希望它的工作方式。

我测试了你的片段,我得到了同样的结果。

问题:一旦您使用了 WooCommerce 登录表单,为什么还要使用其余功能来处理会话?我认为 WooCommerce 会为您做到这一点,所以我正在考虑使用:

/**
* direct users to woocommerce login page
*/

add_filter( 'login_url', 'my_login_page', 10, 2 );
function my_login_page( $login_url, $redirect ) {
    return home_url( '/my-account/?redirect_to=' . $redirect );
}

应该足够了,不(?)。


推荐阅读