web-dev-qa-db-fra.com

wp_logout ne redirige pas avec wp_logout_url () et wp_redirect ()

J'ai écrit cette fonction pour l'utilisateur loggin. L'utilisateur est déconnecté mais ne redirige pas vers la page mais passe à la page d'accueil avec l'URL de déconnexion par défaut. J'ai essayé wp_logout_url () et aussi wp_redirect ().

function wc_registration_redirect( $redirect_to) {
    wp_logout();
    wp_redirect( '/my-account');
    exit;
}
1
Sarthak Shelke

La méthode correcte pour modifier la redirection de déconnexion est le filtre logout_redirect:

/**
 * Filters the log out redirect URL.
 *
 * @since 4.2.0
 *
 * @param string  $redirect_to           The redirect destination URL.
 * @param string  $requested_redirect_to The requested redirect destination URL passed as a parameter.
 * @param WP_User $user                  The WP_User object for the user that's logging out.
 */
add_filter( 'logout_redirect', function( $redirect_to, $requested_redirect_to, $user ) {
    if ( ! $requested_redirect_to ) { // Don't override the redirect if one was already set in the logout URL
        $redirect = home_url( user_trailingslashit( 'my-account' ) );
    }

    return $redirect;
}, 10, 3 );
2
TheDeadMedic

Vous devez l'accrocher aux actions wp_logout, accrocher et supprimer la wp_logout(); de la fonction. Ça va ressembler à ci-dessous-

add_action('wp_logout', 'wc_registration_redirect');

function wc_registration_redirect( $redirect_to) {
    wp_redirect( '/my-account');
    exit;
}
1
CodeMascot