Heim > Fragen und Antworten > Hauptteil
Ich verwende den folgenden Code, um den Benutzer nach erfolgreicher Anmeldung auf die Seite umzuleiten, von der er gekommen ist. Dieser Code wurde getestet und funktioniert einwandfrei:
add_action( 'woocommerce_login_form_end', 'actual_referrer' ); function actual_referrer() { if ( ! wc_get_raw_referer() ) return; echo '<input type="hidden" name="redirect" value="' . wp_validate_redirect( wc_get_raw_referer(), wc_get_page_permalink( 'myaccount' ) ) . '" />'; }
Wenn der Benutzer nun von der Registrierungsseite aus mein Konto aufruft, um sich zu registrieren, möchte ich nach erfolgreicher Registrierung zu seiner ursprünglichen Seite zurückkehren, z. B. mit dem obigen Code.
Dafür habe ich einen Code gefunden, der den Nutzer nach erfolgreicher Registrierung auf die Startseite weiterleitet:
add_filter( 'woocommerce_registration_redirect', 'customer_register_redirect' ); function customer_register_redirect( $redirect_url ) { $redirect_url = get_home_url(); return $redirect_url; }
Gibt es eine Möglichkeit, diesen Code wie den Anmeldecode zu bearbeiten, um den Benutzer auf die Seite umzuleiten, von der er kam?
P粉4764755512023-09-08 00:30:00
您可以使用wp_registration_url( urlencode( get_permalink() ) );
,注册成功后将重定向到上一页。
在您的情况下,由于它是 woocommerce,指向您页面的链接应该是:
<a href="<?php echo wc_get_page_permalink( 'myaccount' ) . '?redirect_to=' . urlencode( get_permalink() ); ?>">Register</a>
其中 wp_registration_url 是注册页面的 URL,并添加 ?redirect_to 参数(包括当前页面)。
根据您的情况,您可以将过滤器中的代码更改为:
add_filter( 'woocommerce_registration_redirect', 'customer_register_redirect' ); function customer_register_redirect() { $redirect_url = isset( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : home_url(); return $redirect_url; }
如果没有设置redirect_to,我们将重定向到主页或您喜欢的其他页面。