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

我一直在寻找可以处理数小时的插件和片段,但没有成功。每个答案都不适用于我。我在菜单中有“登录”链接,通向 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'] ),  

 ); 


哈士奇WWW
浏览 220回答 3
3回答

qq_笑_17

请尝试以下代码,希望对您有所帮助。将以下代码粘贴到当前活动的主题functions.php文件中。// start global session for saving the referer urlfunction 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);

守着星空守着你

这将解决您的问题add_filter( 'woocommerce_login_redirect', function(){          wp_safe_redirect(wp_get_referer());}, 10, 2 );

幕布斯7119047

我们必须使用 WordPress 引荐来源功能:例如,通过单击添加到购物车按钮或任何按钮来存储以前的 URL,在会话或隐藏字段中设置引用 URL。登录或注册成功后,将 WooCommerce 成功登录重定向添加到该 URL。
打开App,查看更多内容
随时随地看视频慕课网APP