Como todo sistema gestor de contenidos, WordPress, además de gestionar contenidos en sí mismo, valga la redundancia, tiene un sistema propio para gestionar usuarios.
Como podéis imaginar, los usuarios somos al final las personas que iniciamos sesión en el sistema para hacer diferentes labores: ya sea administrar el sitio, crear entradas, administrar comentarios o si tienes un comercio electrónico, gestionar los pedidos, etc.
Si tenéis un blog con WordPress o una
tienda online WooCommerce, tenéis al menos un usuario a vuestro nombre, probablemente administrador.
Antes de hablar de cómo importar o exportar de forma masiva usuarios, vamos a ver cómo los gestiona WordPress, qué datos albergan, qué capacidades tienen, qué roles existen… para así poder ver con una perspectiva completa el proceso de importación o exportación de los mismos y entender todos sus detalles.
Una vez entendido todo este panorama, procederemos a explicar cómo importar y exportar usuarios de forma masiva con WordPress con el plugin Import Users From CSV With Meta, plugin que desarrollé, mantengo y que tengo el placer de ir mejorando.
A día de hoy es el plugin para importar usuarios más popular en el ecosistema WordPress y creo que puede seros muy útil (existen plugins de importación generales más populares, pero para importar sólo usuarios, este es el que cuenta con más instalaciones activas).
Usuarios en WordPress
Como en cualquier otro sistema en línea, cuando interactuamos con WordPress, como personas, lo hacemos o identificados o sin identificar.
Si estás sin identificar, sin loguear, lo harás como un visitante. A nivel de programación la función is_user_logged_in() te indica con verdadero o falso si el usuario está autenticado o no.
Si no eres un visitante, sino un usuario del sitio, lo serás por dos motivos:
- Porque alguien te ha registrado anteriormente, si eres el administrador del sitio, te habrás registrado en la instalación, en el momento que te pide expresamente el nombre y la contraseña del primer usuario administrador
- Porque has iniciado sesión, ya sea a través del formulario de login estándar (wp-login.php) o de cualquier otro formulario de inicio de sesión que uses como por ejemplo los que proveen plugins como Clean Login
El registro a priori sólo se hace una vez y el inicio de sesión se hace a priori cada vez que accedas al sitio.
¿Qué datos definen a un usuario en WordPress?
Nuestro usuario en WordPress tiene al menos tres datos básicos y un rol, eso es lo mínimo que puede tener un usuario en WordPress:
- Nombre de usuario.
- Contraseña.
- Correo electrónico.
- Rol.
El nombre de usuario y el correo electrónico, pueden coincidir, pero a efectos de base de datos, serán dos datos diferenciados. Como podéis imaginar esto es lo mínimo porque hace falta:
- Un usuario y una contraseña con la que iniciar sesión.
- Un email con el que comunicarse.
- Un rol que identifique qué capacidades tiene el usuario en el sistema, no es lo mismo un administrador que gestiona todo que un suscriptor que es el rol más básico que existe.
No es el objetivo de esta entrada hablar de los roles, pero básicamente deciros que cada rol, que tiene un usuario; tiene una serie de capacidades. De forma que así el sistema determina qué capacidades tiene cada usuario. Podéis crear nuevos roles o editar los existentes directamente en código o con algún plugin como User Role Editor, muy recomendable para esta labor.
Aparte os recomiendo que os leáis la documentación sobre “Roles and capabilities” si queréis ahondar más en este tema.
Aparte de esos cuatro datos básicos, WordPress puede almacenar por defecto los siguientes campos para cada usuario:
- user_nicename: el nombre de usuario en versión “amable con la URL”, para poder crear urls como la de autor.
-
user_url: la url del usuario.
- display_name: el nombre que se muestra del usuario en WordPress.
- nickname: por defecto es el mismo que el nombre de usuario.
-
first_name: el nombre.
- last_name: los apellidos.
- description: donde rellenamos nuestra biografía.
Además de otros pocos datos internos como cuándo se registró el usuario, cuál es el esquema de colores que usa del panel o si el usuario debe o no conectarse por SSL. Estos datos los vemos en “Mi perfil” o en “Editar usuario” en el backend de WordPress.
Si necesitamos más datos, que los necesitamos casi seguro en cualquier proyecto que desarrollemos, la tabla wp_usermeta nos permite almacenar cualquier otro dato que queramos para un usuario. Por ejemplo, WooCommerce usa esta tabla para guardar datos como la dirección, la ciudad o la provincia de los clientes que se registran.
El problema de registrar muchos usuarios de WordPress de una vez: importar usuarios
Ahora os preguntaréis por qué puede ser necesario tener una herramienta para importar, es decir dar de alta, a muchos usuarios de forma masiva de una sola vez. Si tenéis un blog, os resultará rara esta posibilidad. Probablemente tendréis solo un usuario o a lo sumo alguno más. Es decir, vosotros como administradores y quizás, algún que otro autor.
Sin embargo, como bien sabréis, WordPress a día de hoy no es sólo un sistema gestor de contenidos para crear cuadernos de bitácora. Con WordPress a día de hoy podéis crear todo tipo de sistemas web:
- Tiendas online con WooCommerce o Easy Digital Downloads.
- Sitios de membresía con WooCommerce Membership, Paid Membership Pro, Ultimate Membership Pro o WP Members.
- Redes sociales con BuddyPress.
- Foros con bbPress.
- Sitios de elearning con Sensei o WP LMS Course.
- Una intranet de usuarios con WP Customer Area.
- Entre otros.
Como podéis entender, todos estos plugins manejan muchos más datos que los que hemos contado antes y para muchos más usuarios. Por ejemplo en el caso de WooCommerce tenemos de base, como mínimo, los siguientes metadatos por cada cliente:
- billing_first_name
- billing_last_name
- billing_company
- billing_address_1
- billing_address_2
- billing_city
- billing_postcode
- billing_country
- billing_state
- billing_phone
- billing_email
- shipping_first_name
- shipping_last_name
- shipping_company
- shipping_address_1
- shipping_address_2
- shipping_city
- shipping_postcode
- shipping_country
- Shipping_state
Que se manejan en la pantalla de “Mis direcciones” de la página “Mi cuenta” como podemos ver a continuación:
Recordad que WooCommerce nos permite por defecto establecer para cada pedido y para cada cliente esta diferencia, una dirección de facturación y otra de envío. La primera será la “billing address” y la segunda la “shipping address”. Luego tenemos para cada una de ellas: nombre, apellidos, empresa, dos líneas para la dirección, ciudad, código postal, país y estado. Aparte para la facturación tenemos también un email y un teléfono.
Imaginad tener que rellenar datos para 100 clientes con 20 metadatos de este tipo, aparte de los que ya pide WordPress por defecto. Pensad que aunque el email sea el mismo, tendremos que rellenar el email de WordPress y el de facturación de WooCommerce; o por ejemplo en el caso de nombre y apellidos habrá que incluir el nombre y apellidos tres veces (WordPress, y dos en WooCommerce, dirección de facturación y de envío).
Tened en cuenta, que muchos de los que llegan a WordPress para usarlo en una de sus muchas formas viene de otro sistema, ya sea online u offline. Si queréis ejemplos de usos offline que pasan a WordPress os digo casos que nos hemos encontrado:
- Hay quien tiene una tienda física y quiere dar de alta todos sus clientes en su tienda online para interactuar.
- O una academia que va a incluir a todos los alumnos en un WordPress para que puedan acceder a un elearning basado en LMS Course.
- Una empresa que quiere crear una Intranet con WP Customer Area para que sus empleados vean datos internos.
Y bueno casos online, podéis pensar todos los que queráis. Todos los sistemas libres (PrestaShop, Magento, Joomla!, Drupal, etc.) o propietarios; que pasen a WordPress, que cada día son más, traen con ellos entre otras cosas usuarios con datos que suele ser necesario importar de forma masiva.
Igual que tenemos la necesidad de importar, podemos tener la contraria, exportar los datos de nuestros usuarios. Ya sea para importarlos a otro WordPress, para migrarlos a otro sistema o porque necesitemos tratarlos con una hoja de cálculo o base de datos aparte para cualquier otra razón.
Instalar el plugin
Tras hablar de los usuarios, de los roles, sus metadatos, cómo se usan los usuarios en diferentes escenarios con WordPress, pasemos a explicar cómo realizar una importación de los mismos con un plugin que os comenté: Import Users From CSV With Meta.
Lo primero, será instalar el mismo. Al ser un plugin libre, disponible en el repositorio, sólo tenéis que buscarlo en:
- Vuestro escritorio WordPress.
- En Plugins & Añadir nuevo.
- Buscáis “Import users” y lo instaláis.
Una vez lo tengáis instalado, tendréis en “Herramientas” un nuevo elemento llamado “Importar usuarios desde CSV”. Lo que nos queda ahora es tener los usuarios preparados.
Si tenéis otro WordPress podéis hacerlo directamente, accediendo a esa opción y eligiendo la pestaña “Exportar” que es la segunda que aparece. Ahí tenéis un botón para exportar un CSV con el formato correcto para enviar los usuarios con todos sus datos y metadatos a otro sitio.
Si no, vamos a explicaros cómo crear un CSV correcto para poder importar los datos de forma satisfactoria. Lo primero es tener una buena herramienta para manejar CSV. Este tipo de fichero, del inglés “comma separated values”, es decir, “valores separados por comas”, es un tipo de fichero muy sencillo en su manejo y a la vez muy potente.
Para que os hagáis una idea permite manejar un fichero de tipo Excel, es decir, con filas y columnas, de forma muy sencilla y ligera. Por eso mismo a día de hoy es un estándar de facto a la hora de enviar datos de este tipo, en forma de tabla y de forma sencilla, entre diferentes sistemas.
Aunque Microsoft Excel permite guardar sus ficheros como CSV, yo personalmente os recomiendo LibreOffice u OpenOffice (incluso Google Drive). Como podéis imaginar son muchos años manejando importaciones de este tipo y estas soluciones, me han dado menos problemas que la de Microsoft, ¿por qué? Porque delimitan mejor los valores y nos aseguramos de que los datos estén en UTF-8.
El hecho de guardar un fichero de este tipo con el juego de caracteres UTF-8 es muy importante para usuarios como nosotros, en donde nuestra lengua tiene caracteres que no están contemplados en el ASCII estándar y pueden darnos problemas con otros juegos de caracteres. Me refiero a la eñe y a todas las vocales acentuadas con tilde.
Importar usuarios
Lo primero es crear un fichero nuevo y empezar a rellenar la primera fila. La primera fila representa “la forma” que tendrán los datos, así que tenemos que prepararla primero, para luego rellenar en la fila segunda en adelante, datos para cada usuario.
Las dos primeras columnas tienen que ser:
- Nombre de usuario.
- Correo electrónico.
Esto es así porque como decíamos antes, son dos datos básicos y necesarios. Esas son las únicas columnas que son obligatorias y las únicas que tienen que estar ahí en ese orden, a partir de ahí, el resto podemos ponerlo en el orden que queramos siempre que escribamos bien el nombre de la columna.
El sistema además de importar a los usuarios, les envía un correo con sus datos, entre ellos podemos incluir la contraseña. Para la contraseña podemos:
- Si no creas una columna para las contraseñas: las contraseñas se generarán automáticamente.
- Si creas una columna para las contraseñas (a la que debes de llamar “password”: si la celda está vacía, la contraseña no se actualizará; si la celda tiene un valor, es el que se usará como contraseña.
Cuando hablo de actualizar os preguntaréis a qué me refiero si es que estamos importando usuarios. Y es que además de crear nuevos usuarios de forma masiva, si el usuario ya existe, podemos actualizarlo también de forma masiva.
Aparte de la contraseña, también podemos incluir una columna con el rol que tendrán los usuarios:
- Si no creas una columna para los perfiles: los perfiles serán elegidos del campo “perfil por defecto” en la ventana de importación.
- Si creas una columna llamada ‘role’: si la celda está vacía, se escogen los perfiles del campo ‘Default role’ (perfil por defecto) en la ventana de importación; si la celda tiene un valor, se usará como perfil, si ese perfil no existe se usará el que esté por defecto.
Usaremos los slug de los roles, es decir, “subscriber” en vez “Subscriber” para referirnos a ellos en el fichero CSV. Por cierto, como nota curiosa deciros que aunque WordPress por defecto no lo permite, este plugin nos permite incluir varios roles por usuario, haciendo que la celda “role” tenga valores separados por comas.
Aparte de esas dos columnas “especiales” para roles y contraseñas, el resto de columnas deben corresponderse con:
- El dato estándar de WordPress a importar.
- El metadato en cuestión.
En la pestaña “Documentación” tenéis el listado entero, por no entrar aquí a dar más listados pero para que os hagáis una idea, os doy un ejemplo de cada:
- “display_name” para enseñar el nombre a mostrar del usuario.
- “shipping_postcode” para incluir el código postal de la dirección de facturación del cliente
Y así con todos los datos de WordPress o metadatos que queráis usar. Tenéis un fichero de ejemplo en la pestaña de “Documentación” que puede ser una buena base para comenzar vuestro trabajo.
Así que rellenando la primera fila con los diferentes datos que vamos a importar y el resto de filas con los datos de los usuarios en sí, tendréis lista la importación. Guardad el fichero como CSV, dirigiros a la primera pestaña “Importar” y ahí, elegir el rol por defecto y el fichero y listo.
El proceso se ejecutará y se crearán y actualizarán los usuarios en el sistema.
Correos electrónicos y tareas cron
Antes de terminar quería comentar dos cosas más que permite el plugin que creo interesantes. Las introduciré y ya si queréis hacer uso de ellas y tenéis dudas podéis preguntar en el soporte del plugin o en los comentarios de esta entrada.
Lo primero son los correos electrónicos. Podéis enviar un correo a cada usuario que está siendo importado. Esto es importante porque así todos tendrán una notificación de su nuevo usuario. Este correo electrónico se configura en la pestaña “Opciones de correo” y en dicho correo podemos incluir cualquier dato que esté siendo importado o generado, como la contraseña.
El sistema tiene un sistema de plantillas de correo, por si usáis a menudo la importación y en base al tipo de importación queréis enviar un tipo de correo u otro.
Por otro lado quería comentaros la posibilidad de incluir tareas cron de importación. Es decir, tareas que se ejecuten cada cierto tiempo, de forma autónoma. Por ejemplo, el sistema una vez al día leerá el CSV que está situado en una ruta concreta y actualizará los datos.
Esta herramienta es muy útil para sincronizar bases de datos externas con la de WordPress, hacer integraciones entre diferentes sistemas o para actualizar algún valor de forma automática desde una fuente externa. En Codection hacemos a menudo este tipo de trabajos y este plugin, es una buena base sobre la que asentamos si no el desarrollo completo, parte del mismo.
Conclusiones
Y bueno, con esto termino esta entrada sobre usuarios, roles, sus datos y cómo importarlos y exportarlos en WordPress; que espero que haya aclarado algunos conceptos, que os hayáis enterado por alguna vez de otros pocos y que por supuesto, tengáis una herramienta nueva que os permita hacer importaciones e integraciones de forma rápida y sencilla.
Si tenéis cualquier tipo de duda, por favor, decidme en los comentarios o como decía antes, directamente en el soporte del plugin.
Si sois profesionales del tema seguro que alguna vez os habría venido bien poder usar esta herramienta y si no lo sois, os animo a que probéis a crear o actualizar usuarios con un fichero Excel, es cómodo y bien rápido.
La entrada Como exportar e importar usuarios en WordPress se publicó primero en Webempresa.