web-dev-qa-db-ja.com

wp_logoutがwp_logout_url()およびwp_redirect()を使用してリダイレクトされない

私はログインユーザをログアウトするためにこの関数を書きました。ユーザーはログアウトしていますが、そのページにリダイレクトしていないのであれば、デフォルトのログアウトURLであるホームページに移動します。私はwp_logout_url()とwp_redirect()を試しました。

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

ログアウトリダイレクトを変更するための正しい方法は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

それをwp_logoutアクションフックにフックして、関数からwp_logout();を削除する必要があります。以下のようになります -

add_action('wp_logout', 'wc_registration_redirect');

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