Contents
Introducción: ¿qué es un Multisitio de WordPress y por qué usarlo?
WordPress Multisitio (Multisite) es una capa de funcionalidad nativa que permite ejecutar múltiples sitios web desde una sola instalación de WordPress y una única base de datos con tablas separadas por site. Es ideal para redes de blogs, franquicias, intranets, universidades o empresas con microsites. Sus ventajas principales son: administración centralizada (actualizaciones, temas y plugins), posibilidad de crear sitios rápidamente y control de usuarios a nivel de red. Sin embargo, la gestión de usuarios exige un enfoque específico: los usuarios existen a nivel de red pero no siempre están asignados a cada site por tanto hay que saber cómo crear sites y compartir o asignar usuarios correctamente.
Preparación e instalación de la red Multisitio
Antes de activar Multisite hay que asegurar compatibilidades: versiones de PHP/MySQL adecuadas, acceso FTP/SSH y copia de seguridad completa. La activación implica editar wp-config.php y, tras la creación de la red desde el panel, añadir reglas en .htaccess.
Activar Multisitio en wp-config.php
Editar wp-config.php para permitir la creación de la red:
/ Activar Multisitio / define( WP_ALLOW_MULTISITE, true )
Tras guardar, entrarás en el Escritorio de WordPress y aparecerá la opción Crear una red de sitios en Herramientas → Configuración de la red.
Configurar la red desde el Escritorio
- Decidir entre Subdominios (site.ejemplo.com) o Subdirectorios (ejemplo.com/site). Atención: si tu instalación lleva tiempo activa, puede que los subdirectorios no estén disponibles por conflicto de rutas.
- Rellenar el nombre de la red y el correo del administrador de la red y pulsar Instalar.
- WordPress mostrará fragmentos de código para añadir a wp-config.php y a .htaccess. Pegarlos exactamente donde se indique.
Ejemplo de las constantes que añade WordPress a wp-config.php (generadas por la instalación):
define(MULTISITE, true) define(SUBDOMAIN_INSTALL, false) // true si usas subdominios define(DOMAIN_CURRENT_SITE, ejemplo.com) define(PATH_CURRENT_SITE, /) define(SITE_ID_CURRENT_SITE, 1) define(BLOG_ID_CURRENT_SITE, 1)
Ejemplo de reglas de .htaccess para Multisite (subdirectorios):
RewriteEngine On RewriteBase / RewriteRule ^index.php - [L] # uploaded files RewriteRule ^files/(. ) wp-includes/ms-files.php?file=1 [L] # add a trailing slash to /wp-admin RewriteRule ^wp-admin wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule . index.php [L]
Crear nuevos sitios en la red
Hay dos métodos principales para crear sitios: desde el panel de la red o mediante WP-CLI.
Crear sitios desde el Escritorio de la red
- Accede a Administrador de la red → Sitios → Añadir nuevo.
- Rellena el dominio o ruta, título y correo del administrador del site.
- WordPress crea las tablas específicas del site y añade la configuración inicial.
Crear sitios con WP-CLI (recomendado para automatización)
Ejemplo de comando para crear un site:
# Crear un nuevo sitio en una red multisite wp site create --slug=tienda --title=Tienda --email=admin@ejemplo.com
Usuarios en Multisitio: conceptos clave
- Usuarios a nivel de red: se registran en la tabla users y usermeta global de la instalación. Existen aunque no estén asignados a un site.
- Asignación a un site: cada usuario que participa en un site tiene una entrada en la tabla wp_##_usermeta con la capacidad/rol para ese blog. Un usuario puede existir en la red sin ser miembro de todos los sitios.
- Rol y capacidades: los roles y capacidades se aplican por site ser administrador de un site no implica ser administrador de la red.
Cómo compartir usuarios entre sitios
Compartir usuarios puede significar tanto permitir que un usuario global acceda a varios sitios como sincronizar usuarios de forma automática. Estas son las opciones y ejemplos prácticos.
Añadir un usuario existente a un site (programáticamente)
La función core adecuada es add_user_to_blog(blog_id, user_id, role).
// Añadir un usuario existente al sitio con ID 5 como editor blog_id = 5 user_id = 123 // ID del usuario en la tabla wp_users role = editor add_user_to_blog( blog_id, user_id, role )
Este enfoque es seguro y mantiene la integridad de roles y metas de usuario. Es la forma recomendada frente a manipular directamente las tablas.
Crear y asignar un usuario nuevo en la red
Si creas un usuario por defecto en la red, debes asignarle rol en el site donde debe operar:
// Crear usuario (si no existe) y asignarlo a un site if ( !username_exists( maria ) ) { user_id = wp_create_user( maria, MiPassSegura123, maria@ejemplo.com ) } else { user = get_user_by( login, maria ) user_id = user->ID } add_user_to_blog( 3, user_id, author ) // añade como author al sitio ID 3
Auto-asignar usuarios a nuevos sitios (hooks)
Si deseas que al crear cada site se añadan automáticamente todos los usuarios de la red (o un subconjunto), puedes engancharte a wpmu_new_blog.
// Auto-asignar todos los usuarios a un nuevo blog (no recomendado en redes grandes) add_action( wpmu_new_blog, mi_autosync_usuarios_nuevo_blog, 10, 6 ) function mi_autosync_usuarios_nuevo_blog( blog_id, user_id, domain, path, site_id, meta ) { users = get_users( array( fields => ID ) ) foreach ( users as u ) { add_user_to_blog( blog_id, u, subscriber ) } }
Advertencia: este método puede ser intensivo en recursos si la red tiene muchos usuarios. Es preferible filtrar por meta o roles concretos o usar procesos en background.
Sincronización selectiva de usuarios (estrategia)
- Definir reglas: por ejemplo, añadir solo usuarios con usermeta empleado = true al site interno.
- Usar WP-CLI para operaciones masivas planificadas: exportar IDs y ejecutar scripts para añadir usuarios en lotes.
- Considerar plugins que ofrezcan sincronización y gestión de usuarios entre sitios si se necesita funcionalidad avanzada o interfaz.
Permisos y capacidades entre sitios
Para ajustar capacidades concretas en un site determinado, utiliza switch_to_blog() para cambiar el contexto, modificar roles y restaurar el blog original.
// Añadir una capacidad personalizada al rol editor en el site 7 target_blog = 7 switch_to_blog( target_blog ) role = get_role( editor ) if ( role ) { role->add_cap( manage_cursos ) } restore_current_blog()
Con esto se añade la capacidad solo dentro del contexto del site destino sin afectar al resto de la red.
Comandos útiles y operaciones con WP-CLI
Acción | Comando (ejemplo) |
---|---|
Crear un sitio |
wp site create --slug=blog2 --title=Blog 2 --email=admin@ejemplo.com |
Crear usuario (global) |
wp user create juan juan@ejemplo.com --user_pass=PassSegura! |
Añadir usuario a un site (script PHP via eval o plugin) |
# Usar WP-CLI para ejecutar un PHP que llame a add_user_to_blog() |
Plugins y soluciones disponibles
Si no quieres desarrollar código propio, existen plugins que facilitan:
- Sincronización de usuarios entre sites (añadir/quitar usuarios en lote).
- Gestión centralizada de roles y capacidades en la red.
- Proceso de registro compartido y Single Sign-On entre installs.
Busca en el repositorio oficial por términos como multisite user sync, network users, multisite user management. Antes de usar un plugin, revisa compatibilidad con tu versión de WordPress, reseñas y soporte.
Buenas prácticas y rendimiento
- Realizar backups frecuentes antes de cambios masivos (usuarios, roles, tablas).
- No auto-asignar todos los usuarios a cada site en redes grandes usar condiciones o sincronizaciones bajo demanda.
- Controlar el tamaño de la tabla usermeta: almacenar solo lo imprescindible y evitar metadatos redundantes.
- Usar WP-CLI para tareas masivas fuera de horario pico y con throttling o en batches para no sobrecargar el servidor.
- Auditar roles y permisos periódicamente para reducir privilegios excesivos.
Problemas frecuentes y solución rápida
- Usuario no puede iniciar sesión en un site concreto: comprobar que existe en la red (tabla wp_users) y que tiene entrada en la tabla wp_##_usermeta con el rol si no, ejecutar add_user_to_blog.
- Conflictos con dominios y cookies: verificar DOMAIN_CURRENT_SITE y las configuraciones de cookies de autentificación en subdominios SSL y dominios mapeados requiere configuración de cookies coherente.
- Duplicidad de emails: WordPress multisitio impide por defecto emails duplicados si necesitas permitirlo, requiere consideraciones avanzadas (no recomendado).
- Rendimiento al listar usuarios: paginar y usar consultas específicas (WP_User_Query con campos limitados) para evitar cargas excesivas.
Consideraciones finales prácticas
Configurar y gestionar una red Multisitio exige una visión tanto técnica como organizacional: definir políticas de creación de sites, roles y quién gestiona la red. Para compartir usuarios, la mejor práctica suele ser tener usuarios a nivel de red y asignarlos explícitamente a los sites necesarios mediante add_user_to_blog o procesos controlados (scripts/WP-CLI/plugins). Evita soluciones que dupliquen datos en tablas si no es imprescindible y prioriza la seguridad, las copias de seguridad y el control de acceso.
|
Acepto donaciones de BAT's mediante el navegador Brave 🙂 |