WooCommerce: redirección de inicio de sesión a la URL anterior @ Mi cuenta

Ya hemos visto cómo configurar una URL de redirección de inicio de sesión de Mi cuenta personalizada por rol de usuario , pero hoy queremos cubrir otro caso práctico: redirigir a los usuarios a la URL anterior ( remitente ) después de iniciar sesión desde la página Mi cuenta.

En realidad, WooCommerce ya imprime un campo de entrada oculto (» _wp_http_referer «) en el formulario de inicio de sesión gracias a wp_nonce_field() , pero por alguna razón esto no es suficiente para permitir la redirección real.

Afortunadamente, la función process_login() de WooCommerce proporciona otra solución alternativa: si se configura $_POST[‘redirect’] , el formulario considerará redirigir a esta URL en lugar del panel predeterminado de Mi cuenta. Esto significa que simplemente podemos agregar un nuevo campo oculto al formulario de inicio de sesión con ese nombre exacto («redireccionar»), para que podamos hacer que esa función active la redirección que queremos.

Es más fácil codificar que decir, así que veamos cómo se hace. ¡Disfrutar!

Con el fragmento que encuentra a continuación, agregué un campo de entrada oculto al formulario de inicio de sesión de Mi cuenta de WooCommerce con nombre = «redireccionar». El valor de entrada se completa con la URL visitada anteriormente y esta será la URL a la que se redirigirá el formulario de inicio de sesión al iniciar sesión correctamente.

Fragmento de PHP: redirigir a los usuarios a la URL anterior («Referente»)

/**
 * @snippet       Redirect to Referrer @ WooCommerce My Account Login
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli, BusinessBloomer.com
 * @testedwith    WooCommerce 5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
add_action( 'woocommerce_login_form_end', 'bbloomer_actual_referrer' );
 
function bbloomer_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' ) ) . '" />';
}

Deja un comentario