Problemas con el gancho de filtro ‘woocommerce_login_redirect’

2 minutos de lectura

Avatar de usuario de Paudun
paudún

Tengo problemas para usar el gancho de filtro ‘woocommerce_login_redirect’. Quiero que el usuario sea redirigido a la página principal al iniciar sesión, excepto cuando inicie sesión en la página de pago. No importa lo que intente, el usuario aún es redirigido a la página principal cuando inicia sesión en la página de pago. Aquí está mi código:

add_filter('woocommerce_login_redirect', 'wc_login_redirect'); 
function wc_login_redirect( $redirect_to ) {
    if ( ! is_checkout()){
        $redirect_to = 'https://seiltau.no';
        return $redirect_to;
    }
}

Probé (is_checkout()==false) y (! is_page(‘checkout’)) también, pero todavía me redirigen a la página principal cuando inicio sesión en la página de pago.

¿Algunas ideas?

  • cuando el usuario inicia sesión desde el pago, ¿a qué página desea redirigir?

    – Dhruv

    1 de abril de 2019 a las 9:32

  • No quiero redirigir si el usuario inicia sesión en la página de pago.

    – Paudún

    1 de abril de 2019 a las 9:33

avatar de usuario de itzmekhokan
itzmekhokan

Simplemente reemplace el código de su función con lo siguiente:

if ( $redirect_to == wc_get_page_permalink( 'checkout' ) ){
    return $redirect_to;
}else{
    $redirect_to = 'https://seiltau.no';
    return $redirect_to;
}

  • Agregar $redirect_to fuera de la declaración if aún redirige a la página principal 🙁

    – Paudún

    1 de abril de 2019 a las 9:27

  • ¿Es posible que el código dentro del filtro se ejecute después de salir de la página actual?

    – Paudún

    1 de abril de 2019 a las 9:35

  • entonces creo que su función is_checkout () devuelve falso, verifíquelo.

    – itzmekhokan

    1 de abril de 2019 a las 9:52

  • @Paudun simplemente reemplace su código de función con mi código modificado anterior

    – itzmekhokan

    1 de abril de 2019 a las 9:57

Si alguien está buscando una solución para redirigir en función del rol del usuario:

/**
 * WooCommerce function for redirecting users on login based on user role
 */
add_filter( 'woocommerce_login_redirect', 'wc_my_login_redirect', 10, 2 );
function wc_my_login_redirect( $url, $user ) {
    if ( isset( $user->roles ) && is_array( $user->roles ) ) {
        if ( in_array( 'administrator', $user->roles ) ) {
            $url = admin_url();
        } 
        else if ( in_array( 'seller', $user->roles ) ) {
            $url = site_url( '/dashboard/settings/store/' );
        }
    }
    return $url;
}

¿Ha sido útil esta solución?