WooCommerce: redirección de inicio de sesión por rol de usuario en mi cuenta

Hay momentos en los que no desea que los clientes inicien sesión y sean redirigidos al panel predeterminado "Mi cuenta". Tal vez porque tiene un sitio de membresía y desea que vayan a una página personalizada de "Bienvenida", o tal vez desea enviarlos directamente a su subsección "Mi cuenta"> "Descargas".
No importa el motivo, seguro que descubrir cómo lograr una redirección personalizada una vez que un usuario inicia sesión desde la página "Mi cuenta" es bastante sencillo. El enlace que usaremos se llama "woocommerce_login_redirect" y nos permite activar una redirección segura cada vez que un cliente hace clic en el botón INICIAR SESIÓN. ¡Disfrutar!

Fragmento de PHP: en el inicio de sesión del cliente, redirigir a una URL personalizada (a diferencia de "Mi cuenta")
De forma predeterminada, la función process_login() de WooCommerce redirige a wc_get_page_permalink('myaccount') , que es la URL de la página del panel de Mi cuenta. En los ejemplos a continuación, intentaremos redirigir a los clientes (y NO a los administradores u otros roles de usuario) a una URL personalizada.
Le daré diferentes opciones de redirección dentro del fragmento, asegúrese de elegir solo una y elimine/comente las demás.
/** * @snippet Custom Redirect @ WooCommerce My Account Login * @how-to Get CustomizeWoo.com FREE * @author Rodolfo Melogli * @compatible WooCommerce 4.0 * @donate $9 https://businessbloomer.com/bloomer-armada/ */ add_filter( 'woocommerce_login_redirect' , 'bbloomer_customer_login_redirect' , 9999, 2 ); function bbloomer_customer_login_redirect( $redirect , $user ) { if ( wc_user_has_role( $user , 'customer' ) ) { $redirect = get_home_url(); // homepage //$redirect = wc_get_page_permalink( 'shop' ); // shop page //$redirect = '/custom_url'; // custom URL same site //$redirect = 'https://custom.url'; // custom URL other site //$redirect = add_query_arg( 'password-reset', 'true', wc_get_page_permalink( 'myaccount' ) ); // custom My Account tab } return $redirect ; } |
Deja una respuesta