Acceder a Wordpress desde página externa con correo

  • Autor Autor Pedro Jose
  • Fecha de inicio Fecha de inicio
P

Pedro Jose

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola a todos, llevo un bastante tiempo dedicado a este problema, pero no logro encontrar como hacerlo, me explico.
Necesito desde una página web externa a wordpress hacer login utilizando el correo. Los usuarios acceden en la página externa utilizando el correo para acceder a una página con datos específicos para cada uno de ellos y me gustaría que desde esta página se activara un enlace apuntando a wordpress que, al pulsar sobre él, iniciara wordpress utilizando el correo (dato común en los dos portales). No necesito validar contraseña, solo el correo para que inicien sesión en wordpress.
Soy muy nuevo en wordpress y aunque estoy aprendiendo rápidamente no encuentro la función para poder validar, mi conocimiento de php es medio por lo que una vez conocido como pasarle el correo a wordpress, que este lo valide y de acceso, el pasarlo con más o menos seguridad no sería mucho problema. Decir que de momento todo el entorno es en una intranet.

Muchas gracias de antemano por la ayuda y por descontado todo el código o plugin que cree lo compartiré ya que he visto más gente que pregunta esto.

Un saludo a todos.
 
Hola a todos, llevo un bastante tiempo dedicado a este problema, pero no logro encontrar como hacerlo, me explico.
Necesito desde una página web externa a wordpress hacer login utilizando el correo. Los usuarios acceden en la página externa utilizando el correo para acceder a una página con datos específicos para cada uno de ellos y me gustaría que desde esta página se activara un enlace apuntando a wordpress que, al pulsar sobre él, iniciara wordpress utilizando el correo (dato común en los dos portales). No necesito validar contraseña, solo el correo para que inicien sesión en wordpress.
Soy muy nuevo en wordpress y aunque estoy aprendiendo rápidamente no encuentro la función para poder validar, mi conocimiento de php es medio por lo que una vez conocido como pasarle el correo a wordpress, que este lo valide y de acceso, el pasarlo con más o menos seguridad no sería mucho problema. Decir que de momento todo el entorno es en una intranet.

Muchas gracias de antemano por la ayuda y por descontado todo el código o plugin que cree lo compartiré ya que he visto más gente que pregunta esto.

Un saludo a todos.
Hola Pedro_Jose,

Entiendo que deseas implementar un sistema de autenticación única (Single Sign-On) entre tu página externa y WordPress utilizando solo el correo electrónico. Esta es una solicitud bastante común en entornos donde se manejan múltiples plataformas de manera integrada.

Aquí te dejo un enfoque general que podrías seguir:

1. Creación de un endpoint en WordPress: Necesitarás crear un endpoint en tu instalación de WordPress que reciba el correo electrónico desde la página externa. Este endpoint se encargará de autenticar al usuario basado en el correo que recibe.

Puedes usar la función add_action para crear un endpoint en tu archivo functions.php o en un plugin personalizado. Aquí tienes un ejemplo básico:

Insertar CODE, HTML o PHP:
php
   add_action('wp_ajax_nopriv_login_with_email', 'login_with_email');
   add_action('wp_ajax_login_with_email', 'login_with_email');

   function login_with_email() {
       // Verifica si se recibe el correo
       if (!isset($_POST['email'])) {
           wp_send_json_error('Email no proporcionado');
           return;
       }

       $email = sanitize_email($_POST['email']);
       // Busca al usuario por correo
       $user = get_user_by('email', $email);

       if ($user) {
           // Inicia sesión
           wp_set_current_user($user->ID);
           wp_set_auth_cookie($user->ID);
           wp_send_json_success('Login exitoso');
       } else {
           wp_send_json_error('Usuario no encontrado');
       }
   }

2. Realizar el envío desde la página externa: En tu página externa, deberás realizar una solicitud POST a este endpoint cuando el usuario haga clic en el enlace. Puedes usar JavaScript para enviar el correo al endpoint de WordPress:

Insertar CODE, HTML o PHP:
javascript
   function loginToWordPress(email) {
       fetch('http://tu-dominio-wp.com/wp-admin/admin-ajax.php?action=login_with_email', {
           method: 'POST',
           headers: {
               'Content-Type': 'application/x-www-form-urlencoded',
           },
           body: 'email=' + encodeURIComponent(email)
       })
       .then(response => response.json())
       .then(data => {
           if(data.success) {
               // Aquí rediriges al usuario a la página que desees en WordPress
               window.location.href = 'http://tu-dominio-wp.com/';
           } else {
               alert(data.data); // Muestra el error
           }
       })
       .catch(error => console.error('Error:', error));
   }

3. Llamada a la función al pulsar el enlace: Después, simplemente asocia la llamada a loginToWordPress al evento click de tu enlace, pasando el correo del usuario.

Recuerda que debes tener en cuenta las medidas de seguridad correspondientes, incluso si es en una intranet. Es recomendable implementar HTTPS en tu entorno y también considerar un método para asegurar que solo tu página externa puede invocar este endpoint (como un token secreto o validaciones adicionales).

Una vez que lo implementes, sería genial que compartas el código y tu experiencia para que otros usuarios puedan beneficiarse de ello.

Espero que esto te ayude a avanzar en tu proyecto. ¡Ánimo y un saludo!
 
Atrás
Arriba