Hello, run the login form and sign up form on one page (/login) without problems. This template consists of 1 page, 2 functions, 2 forms. Customize it for yourself.
Purpose:
When the user wants to reach the checkout page after the cart total, redirect to the login page. If he/she is not a member, make him/her become a member. Provide experience with social login. Redirect the user who is a member or logged in to the previous page.
Steps:
- Create custom login page (login form, register form)
- Custom redirect code (function)
- Redirect the user who wants to checkout to the login page (function)
Create hidden field for login form:
Label:Referrer url, Value: {echo:wp_get_referer}
Create a hidden field for Register form:
Label:Referrer url, Value: {echo:wp_get_referer}
Custom redirect for forms:
add_action('bricks/form/custom_action', 'custom_redirect_for_multiple_forms_v3', 10, 1);
function custom_redirect_for_multiple_forms_v3($form) {
$form_fields = $form->get_fields();
$form_id = $form_fields['formId'];
// Setting references for Login and Register forms
$redirect_url = ''; // Default redirect URL is empty
if ($form_id === 'mdjact') { // Login form ID
$redirect_url = isset($form_fields['form-field-cdxvzg']) ? $form_fields['form-field-cdxvzg'] : '';
} elseif ($form_id === 'pedzwg') { // Register form ID
$redirect_url = isset($form_fields['form-field-wsmdfa']) ? $form_fields['form-field-wsmdfa'] : '';
}
// Check for reference URL
if (empty($redirect_url)) {
$redirect_url = home_url(); // Default redirect to home URL
} else {
$redirect_url = esc_url_raw($redirect_url); // Creating a secure URL
}
// Prevent redirect loops by checking if the user is already on the current page
if (home_url(add_query_arg(null, null)) !== $redirect_url) {
$form->set_result([
'action' => 'custom_redirect',
'type' => 'redirect',
'redirectTo' => $redirect_url,
'redirectTimeout' => 0
]);
}
}
Redirection for guest users:
function redirect_guests_from_checkout_to_login() {
// Checks if on the checkout page and if the user is not logged in
if (function_exists('is_checkout') && is_checkout() && !is_user_logged_in()) {
// If the user is not logged in and not in Bricks Builder edit mode, redirect to a custom login page
if (!(isset($_GET['bricks']) && $_GET['bricks'] === 'run')) {
wp_safe_redirect(esc_url(home_url('/login/')));
exit;
}
}
}
add_action('template_redirect', 'redirect_guests_from_checkout_to_login');