WordPress Multisite con varios segmentos en url
Wordpress
Alejandro Lucena
Antes de nada. ¿Qué es WordPress Multisite?
WordPress aporta una serie de configuraciones y utilidades para convertirse fácilmente en una red de sitios. Toda este tipo de configuraciones y funcionalidades las podéis encontrar bajo el nombre de WordPress Multisite. Si activamos WordPress Multisite podremos crear tantos Sitios como queramos en una instalación única lo que nos permite una mejor organización de nuestro entorno web o incluso ofrecer la creación de sitios dentro de nuestra instalación a terceros.
Para configurar correctamente WordPress Multisite os aconsejamos que visitéis el manual oficial.
Ejemplo WordPress Multisite
Imaginemos un caso práctico. Tenemos una empresa llamada Pr Consulting con un dominio asociado prconsulting.com. Queremos crear una estructura web por cada provincia donde tenemos una sede, por ejemplo Madrid, Barcelona y Valencia con la peculiaridad de que cada provincia va a tener un tema WordPress y administradores específicos. Aquí es donde entra en juego WordPress Multisite creando tantos sitios como provincias tengamos. La estructura quedaría así:
- prconsulting.com (Sitio por defecto. Un uso común es utilizar este sitio como distribuidor para los sitios más específicos)
- prconsulting.com/barcelona/ (Sitio para la sede en Madrid)
- prconsulting.com/madrid/ (Sitio para la sede en Barcelona)
- prconsulting.com/valencia/ (Sitio para la sede en Valencia)
Sites con más de un segmento en la Url
Basándonos en el caso práctico anterior, imaginemos que queremos una estructura con varios directorios o segmentos en la Url, por ejemplo, para agregar el idioma de visualización de cada provincia:
- prconsulting.com/en/barcelona/
- prconsulting.com/es/barcelona/
- prconsulting.com/en/madrid/
- prconsulting.com/es/madrid/
Pues bien, este caso no está contemplado por defecto en la implementación de WordPress. Tendremos que aplicar un filtro y realizar algunas modificaciones para conseguir que todo funcione correctamente. Empecemos.
Primero tendremos que crear un archivo sunrise.php en el directorio wp-content de nuestra instalación para aplicar el filtro site_by_path_segments_count. La aplicación del filtro se hace antes de la carga de plugins y functions.php por lo tanto esta técnica es necesaria para que nuestro sistema funcione.
<?php add_filter('site_by_path_segments_count', 'co_modify_path_segments_count', 1); /** * Modify path segments count for multisite path * @return int */ function co_modify_path_segments_count() { return 2; }
Nuestro wp-config.php debería quedar así, incluyendo el define para el uso del SUNRISE.
... /** Multisite */ define('WP_ALLOW_MULTISITE', true); define('MULTISITE', true); define('SUBDOMAIN_INSTALL', false); define('PATH_CURRENT_SITE', ''); /** SUNRISE */ define('SUNRISE', true); ...
Ya solo queda definir las reglas de reescritura en el .htaccess de manera que el acceso a los contenidos y al admin funcionen adecuadamente con dos segmentos.
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [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] # modify Rewrite rule for two segments in site URL. RewriteRule ^([_0-9a-zA-Z-/]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-/]+/)?(.*\.php)$ $2 [L] # end modify RewriteRule . index.php [L] # END WordPress
Esperamos que os sirva de ayuda para la gestión de vuestros proyectos Multisitio. Feliz Desarrollo.