Al principio tenía un blog. No era gran cosa pero me gustaba gestionarlo y publicar de cuando en vez. Luego surgieron nuevos proyectos, que requerían más instalaciones de WordPress, y mantenerlas actualizadas se convertía en un problema de tiempo y ganas. Llegamos a plantearnos el abandonar parte de ellas, pero finalmente nos decidimos a darle una oportunidad a WordPress Multisite.

Multisite te permite, desde una sóla instancia de WordPress, gestionar todos los blogs que quieras. Para esto existe el Super Administrador, que puede crear usuarios y blogs, y que se encarga de actualizar los temas y plugins para todos con un simple clic de ratón. Por defecto, los administradores de cada blog no pueden activar/desactivar plugins ni instalar temas, pero gracias a la gran comunidad de desarrolladores existen varios plugins para conseguir lo que queramos en cada situación concreta.

Antes de continuar, recomiendo tantear el terreno antes en una web de prueba, porque aunque no es complicado, no está de más conocer de primera mano lo que te vas a encontrar y las opciones correctas para cada caso.

Requerimientos

El módulo de Apache mod_rewrite debe estar activado. Lo más seguro es que ya lo estés usando con los permalinks de tu blog.

Si quieres usar subdominios para los blogs, tu proveedor web debe soportar dominios wildcard (*). Sin entrar en demasiados detalles, significa que WordPress creará un subdominio para cada nuevo blog; ej blog1.miweb.com; en caso de no soportarlo, tendrás que conformarte con subdirectorios; ej miweb.com/blog1  Más adelante explicaré lo que hice y cómo con 1and1, mi proveedor.

Instalación

Puedes instalar desde cero o puedes usar un blog de wordpress que lleve tiempo en la red. En cualquiera de los dos casos, lo que debes hacer es añadir una línea al archivo wp-config.php, justo antes de la línea /* ¡Eso es todo, deja de editar! Feliz blogging */:

/* Multisite */
define(‘WP_ALLOW_MULTISITE’, true);
/* ¡Eso es todo, deja de editar! Feliz blogging */

crear red

Ya en el Escritorio de WordPress (si vas a empezar de cero, instala WordPress primero normalmente), aparecerá una nueva opción en el menú Herramientas -> Configuración de la Red. Aquí es donde creas la tu red. Te pedirá un nombre para la red, y un correo para el super administrador de la misma, que puede ser uno nuevo o la de un usuario existente. También deberás elegir si usar directorios o subdominios. Esto depende de tu preferencia personal. En mi caso usé directorios, porque mi proveedor no soporta subdiminios wildcard. En la parte de mapear a dominios externos lo explico con detalle.

configuración inicial

Configuración inicial – WordPress Network

En la siguiente pantalla tendrás que copiar y pegar dos cosas, una en el archivo wp-config.php, justo antes de la línea /* ¡Eso es todo, deja de editar! Feliz blogging */; y otra en tu .htaccess. Usa el código que te muestre WordPress, que será algo similar a este.

WP-CONFIG.PHP

define( ‘MULTISITE’, true );
define( ‘SUBDOMAIN_INSTALL’, true);
$base = ‘/’;
define( ‘DOMAIN_CURRENT_SITE’, ‘www.miweb.com’ );
define( ‘PATH_CURRENT_SITE’, ‘/’ );
define( ‘SITE_ID_CURRENT_SITE’, 1 );
define( ‘BLOG_ID_CURRENT_SITE’, 1 );

.HTACCESS

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

editar archivs

Editar archivos

wp-config

wp-config.php

Migrar tus blogs

En este punto tienes la red funcional y un blog creado. Ahora empieza la diversión. Tanto si quieres migrar de otro blog como si vas a empezar uno nuevo, debes ir a Añadir Sitio. Debes elegir el nombre y el correo, además del directorio (no he probado con subdominios, pero será parecido), y ya tendrás el sitio creado. Si lo que quieres es migrar, sólo debes importar el archivo que hayas exportado desde tu otro blog en el menú Herramientas – Importar (Nota: deberás activarlo primero para la red, para poder ser utilizado en los blogs de la misma). Un detalle que debes tener en cuenta es que en el proceso de importación WordPress filtrará etiquetas como iframe o embed en las entradas del blog. Si no quieres arreglarlo manualmente, y estás seguro de que el archivo que importas está libre de código malicioso, hay algo que puedes hacer. En el archivo kses.php de la carpeta wp-includes, más o menos en la línea 1337, hay tres líneas que debes comentar con un ‘#’ delante de las mismas, tal que así:

// Post filtering
#add_filter(‘content_save_pre’, ‘wp_filter_post_kses’);
#add_filter(‘excerpt_save_pre’, ‘wp_filter_post_kses’);
#add_filter(‘content_filtered_save_pre’, ‘wp_filter_post_kses’);

Esto evitará que revise los artículos y elimine determinado contenido. Lo que recomiendo es que una vez importado el blog, vuelvas a poner el archivo kses.php tal y como estaba en un principio.

Domain Mapping

Si dispones de dominios propios para alguno de los blogs que vas a mantener en esta red, deberás usar el plugin WordPress MU Domain Mapping. Con este plugin podrás redirigir los blogs a sus dominios externos a la red. (Nota: en mi caso, es una instalación de subdirectorios, ya que mi hosting no permite el funcionamiento con subdominios. Si usas esa configuración, el proceso puede variar)

Primero debes instalarlo como si de otro plugin se tratara. Una vez hecho esto, deberás mover el archivo sunrise.php desde la carpeta /wp-content/plugins/wordpress-mu-domain-mapping/ a wp-content/ Puede parecer complicado o peligroso, pero no lo es.

Ahora debes al menú Ajustes -> Domain Mapping. Aquí configuraremos el plugin. En mi caso esta es la configuración elegida:

Opciones Domain Mapping

Opciones Domain Mapping

En ‘Server CNAME domain’ debes poner la ruta principal de toda la red de blogs. ‘ Remote Login’ junto con ‘Redirect administration pages’ permite manejar todos los blogs desde la cuenta de superadministrador sin tener que loguearse en cada uno por separado. ‘Permanent redirect’ ayuda al posicionamiento en Google. ‘User domain mapping page’ permite que los usuarios de cada blog puedan mapear sus propios dominios, lo que en mi caso no me interesa. La última recomiendo desactivarla para todos los casos.

Ahora es cuando llega lo interesante. Para mapear un dominio, dirígete a Ajustes – > Domains

Redirigir un blog Domain Mapping

Redirigir un blog Domain Mapping

‘Site ID’ la id del blog que deseas redirigir. Si no la sabes, en Sitios -> All Sites , aparecen todos los blogs que se han creado. Si clicas en la opción editar del blog que deseas mapear, irás a la página de edición. En la barra de direcciones del navegador, verás que la ruta termina en un número. Esa es la id de ese blog.

‘Domain’ es el dominio que quieres usar para ese blog. Además debes marcar ‘Primary’ para que sea el dominio primario para el blog.

Ya has terminado con el mapeo. Lo último que debes hacer es ir al panel de control de tu registrador de dominios, y cambiar el destino del dominio que vas a usar y has escrito en ‘Domain’. Lo que debes hacer es elegir como destino la carpeta principal de la red de blogs, no la del blog, y el plugin se encargará del resto. Por ejemplo, si quiero que el blog ‘redblogs.com/blog3’ tenga el dominio ‘miblog.es’, la configuración sería:

Domain Mapping Plugin
Site ID: 3
Domain: miblog.es

Panel de control del hosting
miblog.es -> Destino -> /instalacionwordpress/

La nueva configuración dominio debería estar funcionando en 10-15 minutos.

 

Gracias a Darren Meehen por su estupenda guía en onextrapixel.com.