En ocasiones se hace necesario que wordpress no utilice sus usuarios , sino que los usuarios y las credenciales de estos usuarios se encuentren en otra base de datos, (external login) puede ser el caso de aplicaciones de administración que compartan usuarios con wordpress o que tengan un área privada dentro de la página web en wordpress. Para realizar esta operación, uno de los plugins que podemos actualizar y que mejor funcionan es External Login , permite realizar el mapeo de campos con la tabla de la base de datos externa a wordpress para que wordpress identifique a los usuarios con su nombre, permite la utilización de determinados tipos de cifrados para la contraseña , incluir salt.
Entre las opciones de configuración se incluyen:
- Database Connection , permite el establecimiento de la conexión con la base de datos externa pudiendo elegir entre los proveedores de bases de datos MySQL, PostgreSQL y MSSQLServer.
- Password Hashing , nos permite incluir el cifrado del passsword y si se incluye un salt o no en la generación de la contraeseña.
- Database Table Mapping, permite el mapeo de campos entre la tabla de la base de datos externa y la de usuarios de wordpress pudiendo identificar los campos: Username Field Name, Password Field Name, First Name Field Name, Last Name Field Name, Role Field Name
- Functionality Settings, permite establecer características de la conexión, como si queremos mantener los usuarios de la instalación de wordpress existente además de los permitidos en la tabla externa, esto es util por ejemplo si tenemos un usuario administrador en nuestra web y queremos que los usuarios de la tabla externa accedan con el rol de suscriptor.
- Role Settings, identifica que rol van a tener los usuarios que se conecten a partir de la tabla externa
- Exclude Users, si queremos excluir algún usuario de esta tabla externa que nos interese que se conecte a wordpress.
Una vez rellenada la configuración podemos hacer un test desde la misma configuración y ver si se realiza la validación de forma correcta o no.
Importante: Una vez activa esta configuración cualquier usuario que tenga las credenciales y que esté en la tabla externa puede conectarse a nuestra instalación de wordpress, pero wordpress tiene un problema, cuando un usuario externo hace login identifica que se ha realizado un cambio de contraseña sobre los registros que figuran en la base de datos de wordpress y envía un correo al usuario en cuestión indicando que se ha realizado un cambio de contraseña. Esto es un problema, para los usuarios el acceso es transparente, no tienen porque saber que cuando acceden lo hacen con credenciales que no están almacenadas en wordpress, y al recibir este correo se alarman, indican que ellos que no han cambiado la contraseña (cuestión que es cierta). Para conseguir que no envíe estos correos tras mucho investigar lo único que he encontrado es deshabilitar el envío de estos correos directamente sobre el código, en el archivo user.php localizado en el directorio wp-includes de la instalación de wordpress, y comentando aquellas líneas donde se hace referencia a la función wp_mail , normalmente aparecen dos veces, una suele estar una en la 2075 en la función wp_update_user y la otra en la 2135 también en la misma función, se que no es del todo ortodoxo pero es la única manera que me ha funcionado, además hay que tener en cuenta de que al actualizar wordpress de versión, este archivo se machacará y hay que volver a comentar las líneas, esto es muy importante ya que si no nos damos cuenta los usuarios recibirán el correo pese a no haber cambiado nada de la configuración del plugin external login.