WordPress - Woocommerce hook login php duda

 
Vista:

Woocommerce hook login php duda

Publicado por obed (1 intervención) el 22/04/2022 17:17:03
Quiero mandar un hook de formulario de inicio de sesión de woocommerce a otra plantilla de login php, y que se consuma con ajax, intente pero soy principiante, en mi otra plantilla se debe iniciar sesión y redireccionar para ingresar a la página, lo que quiero saber coom se hace con un ejemplo simple , busqué en foros pero no encontré
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Redireccionar formulario de inicio de sesión de WooCommerce a otra plantilla de login usando AJAX

Publicado por Alejandro (169 intervenciones) el 17/04/2024 00:18:30
Hola Obed.

Si deseas redireccionar el formulario de inicio de sesión de WooCommerce a otra plantilla de login PHP y consumirlo con AJAX, aquí tienes un ejemplo simple de cómo puedes hacerlo:

1. Crea una nueva plantilla de login PHP: En tu tema de WordPress, crea un nuevo archivo llamado login-template.php en la carpeta del tema. Este archivo será tu plantilla de login personalizada.

2. Agrega el código HTML y PHP necesario: En login-template.php, agrega el código HTML y PHP para crear el formulario de inicio de sesión personalizado. Puedes utilizar las funciones de WooCommerce para manejar el inicio de sesión, como woocommerce_login_form() para mostrar el formulario de inicio de sesión.

3. Crea una función de AJAX en functions.php: En el archivo functions.php de tu tema, agrega el siguiente código para crear una función de AJAX que maneje la solicitud de inicio de sesión:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
add_action('wp_ajax_custom_login', 'custom_login');
add_action('wp_ajax_nopriv_custom_login', 'custom_login');
 
function custom_login() {
    // Obtén los datos del formulario de inicio de sesión
    $username = $_POST['username'];
    $password = $_POST['password'];
 
    // Realiza las validaciones y el inicio de sesión
    $user = wp_signon(array('user_login' => $username, 'user_password' => $password));
 
    if (is_wp_error($user)) {
        // Si hay un error, devuelve un mensaje de error
        echo json_encode(array('success' => false, 'message' => 'Error al iniciar sesión'));
    } else {
        // Si el inicio de sesión es exitoso, devuelve un mensaje de éxito
        echo json_encode(array('success' => true, 'message' => 'Inicio de sesión exitoso'));
    }
 
    // Detén la ejecución de WordPress
    wp_die();
}

4. Agrega el código JavaScript para enviar la solicitud AJAX: En tu archivo JavaScript personalizado, agrega el siguiente código para enviar la solicitud AJAX al servidor:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
jQuery(document).ready(function($) {
    // Captura el evento de envío del formulario de inicio de sesión
    $('#login-form').on('submit', function(e) {
        e.preventDefault();
 
        // Obtén los datos del formulario
        var username = $('#username').val();
        var password = $('#password').val();
 
        // Envía la solicitud AJAX
        $.ajax({
            url: ajaxurl,
            type: 'POST',
            data: {
                action: 'custom_login',
                username: username,
                password: password
            },
            dataType: 'json',
            success: function(response) {
                if (response.success) {
                    // Si el inicio de sesión es exitoso, redirecciona a la página deseada
                    window.location.href = 'https://www.ejemplo.com/pagina-deseada';
                } else {
                    // Si hay un error, muestra el mensaje de error
                    alert(response.message);
                }
            },
            error: function() {
                // Si hay un error en la solicitud AJAX, muestra un mensaje de error genérico
                alert('Error en la solicitud AJAX');
            }
        });
    });
});

5. Actualiza el formulario de inicio de sesión: En tu plantilla de login original, actualiza el formulario de inicio de sesión para que tenga el ID login-form y los campos de nombre de usuario y contraseña tengan los IDs username y password, respectivamente.

Con estos pasos, has creado una plantilla de login personalizada y has configurado la función de AJAX para manejar la solicitud de inicio de sesión. Cuando el formulario de inicio de sesión se envíe, se llamará a la función de AJAX, que enviará los datos al servidor y realizará el inicio de sesión. Si el inicio de sesión es exitoso, se redireccionará a la página deseada.

Recuerda reemplazar 'https://www.ejemplo.com/pagina-deseada' con la URL de la página a la que deseas redireccionar después del inicio de sesión.

Espero que este ejemplo te sea útil para implementar tu formulario de inicio de sesión personalizado en WooCommerce. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar