为了账号安全,请及时绑定邮箱和手机立即绑定

WooCommerce - 登录后重定向到上一页

WooCommerce - 登录后重定向到上一页

PHP
哈士奇WWW 2021-07-07 18:57:28
我一直在寻找可以处理数小时的插件和片段,但没有成功。每个答案都不适用于我。我在菜单中有“登录”链接,通向 WooCommerce 的“我的帐户”页面,其中显示了登录表单。我希望客户在成功登录后返回到点击“登录”链接的页面。wp_get_referer()$_SERVER["HTTP_REFERER"]如果放在挂钩的函数中,则不返回任何内容并返回我的帐户页面woocommerce_login_redirect(我使用 PHP 调试控制台进行检查)。这是我的代码:// Redirect user after login.add_filter( 'woocommerce_login_redirect', 'wc_custom_user_redirect', 10, 2 );function wc_custom_user_redirect( $redirect, $user ) {    // Get the first of all the roles assigned to the user    $role = $user->roles[0];    $dashboard = admin_url();           if (in_array($role, array('administrator', 'shop_manager', 'editor', 'author', 'contributor'))) {        $redirect = $dashboard;             } elseif (in_array($role, array('customer', 'subscriber'))) {        $redirect = $_SERVER["HTTP_REFERER"];              } else {        $redirect = $_SERVER["HTTP_REFERER"];           }    return $redirect;}这是我使用的过滤器出现在 WooCommerce 代码中的位置:/**    * Process the login form.    */   public static function process_login() {       $nonce_value = isset( $_POST['_wpnonce'] ) ? $_POST['_wpnonce'] : '';       $nonce_value = isset( $_POST['woocommerce-login-nonce'] ) ? $_POST['woocommerce-login-nonce'] : $nonce_value;       if ( ! empty( $_POST['login'] ) && wp_verify_nonce( $nonce_value, 'woocommerce-login' ) ) {           try {               $creds = array(                   'user_password' => $_POST['password'],                    'remember' => isset( $_POST['rememberme'] ),   ); 
查看完整描述

3 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

请尝试以下代码,希望对您有所帮助。将以下代码粘贴到当前活动的主题functions.php文件中。


// start global session for saving the referer url

function start_session() {

    if(!session_id()) {

        session_start();

    }

}

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


// get  referer url and save it 

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 

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);


查看完整回答
反对 回复 2021-07-09
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

这将解决您的问题



add_filter( 'woocommerce_login_redirect', function(){

   

       wp_safe_redirect(wp_get_referer());


}, 10, 2 );


查看完整回答
反对 回复 2021-07-09
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我们必须使用 WordPress 引荐来源功能:

例如,通过单击添加到购物车按钮或任何按钮来存储以前的 URL,在会话或隐藏字段中设置引用 URL。登录或注册成功后,将 WooCommerce 成功登录重定向添加到该 URL。


查看完整回答
反对 回复 2021-07-09
  • 3 回答
  • 0 关注
  • 219 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信