私はログインユーザをログアウトするためにこの関数を書きました。ユーザーはログアウトしていますが、そのページにリダイレクトしていないのであれば、デフォルトのログアウトURLであるホームページに移動します。私はwp_logout_url()とwp_redirect()を試しました。
function wc_registration_redirect( $redirect_to) {
wp_logout();
wp_redirect( '/my-account');
exit;
}
ログアウトリダイレクトを変更するための正しい方法は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 );
それをwp_logout
アクションフックにフックして、関数からwp_logout();
を削除する必要があります。以下のようになります -
add_action('wp_logout', 'wc_registration_redirect');
function wc_registration_redirect( $redirect_to) {
wp_redirect( '/my-account');
exit;
}