Replace the previous code with the one below. It should get the current URL as a query parameter and redirect back to it once registered or logged in.
function redirect_woocommerce_to_ultimate_member() {
if (is_checkout() && !is_user_logged_in()) {
// Get current checkout URL
$checkout_url = add_query_arg( array() );
// Choose between Ultimate Member login or registration page
$ultimate_member_page_title = is_wc_endpoint_url('order-pay') ? 'Login' : 'Register'; // Change 'Login' and 'Register' to your page titles
// Ultimate Member page URL
$ultimate_member_page_url = get_permalink( get_page_by_title($ultimate_member_page_title) );
// Appending the current checkout URL as a query parameter
$redirect_url = add_query_arg( 'redirect_to', urlencode( $checkout_url ), $ultimate_member_page_url );
// Redirecting to Ultimate Member page
wp_redirect( $redirect_url );
exit;
}
}
add_action( 'template_redirect', 'redirect_woocommerce_to_ultimate_member' );
function um_redirect_after_login_or_registration( $url, $user ) {
if ( isset( $_REQUEST['redirect_to'] ) ) {
$url = urldecode( $_REQUEST['redirect_to'] );
}
return $url;
}
add_filter( 'um_registration_login_url', 'um_redirect_after_login_or_registration', 10, 2 );
add_filter( 'um_login_redirect_url', 'um_redirect_after_login_or_registration', 10, 2 );