How to use login form and register form on the same page?

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:

  1. Create custom login page (login form, register form)
  2. Custom redirect code (function)
  3. 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');

5 Likes