blog webempresa

Cookies en WordPress Multisitio ¡define las rutas!

por | Mar 21, 2018 | Aprender WordPress

cookies en wordpress


Las cookies son necesarias para el buen funcionamiento de las webs por lo que bloquearlas solo va a servir para dificultar la navegación por el sitio a los visitantes.

Las cookies en WordPress son una buena solución para mantener sesiones de un sitio web, pues permiten almacenar preferencias de navegación recopilando algunos datos para el sitio.

En Multisitios WordPress posible que por redirecciones que no terminan (loop infinito) sea necesario establecer las rutas de cookies para las constantes COOKIE_DOMAIN, SITECOOKIEPATH, ADMIN_COOKIE_PATH y COOKIEPATH.

…te ha sonado a rollo, pero no saques conclusiones ¡sigue leyendo! ヅ

Definir las rutas de almacenamiento de las cookies evitará algún que otro problema con los accesos.

 

 

..antes un poco de teoría para situarnos.

 

 ¿Qué dice el Codex de WordPress.org sobre la configuración de cookies en multisitios?

Contextualicemos esto en instalaciones de WordPress Multisitio donde varias webs WordPress, de una red de sitios, utilizarán la misma IP (del servidor) con diferentes dominios o subdominios.

El dominio configurado en las cookies para WordPress se puede especificar para aquellos sitios con configuraciones de dominio inusuales.

Por ejemplo, si los subdominios se utilizan para servir contenido estático, se puede establecer el dominio de cookies únicamente para el dominio no estático y así evitar que se envíen cookies de WordPress con cada solicitud al contenido estático en el subdominio.

Esto nos puede llevar a que en multisitios, al tratar de acceder al dashboard de uno de los sitios de la red, por ejemplo dominio1.com/wp-admin seamos redireccionados a wp-login.php al poner el usuario y contraseña en el formulario de acceso.

Por regla general esto suele ir acompañado del siguiente aviso:

ERROR: Cookies are blocked or not supported by your browser. You must enable cookies to use WordPress.


Cookies are blocked or not supported by your browser

…pero sigue leyendo antes de llegar a la solución.

 

 Constantes de Cookies definibles en WordPress

Existen una serie de constantes en WordPress que almacenan valores (rutas) para cookies. Se establecen en el archivo wp-config.php y tienen como finalidad definir una ruta diferente para instalaciones de una red de sitios.

Estas constantes son:

  • COOKIE_DOMAIN: Con punto antes del dominio si usas subdominios (.dominio.com).
  • COOKIEPATH: Directorio principal para todas las instalaciones de multisitios.
  • SITECOOKIEPATH: Utilizada por la interfaz de WordPress.
  • ADMIN_COOKIE_PATH: Utilizada por el backend de WordPress.

 

 Configurar las Cookies de dominio en Multisitios

Constantes como COOKIE_DOMAIN (dominio de cookie) solo deben utilizarse en multisitios si se quiere servir cookies de un solo dominio para todos los sitios en la red (multisitios).

Si omites la constante o la estableces con un valor vacío, las cookies pertenecerán al dominio solicitado.

Esta es la configuración a utilizar para entornos de multisitios o red de sitios, especialmente cuando se trata de diferentes dominios.

define('COOKIE_DOMAIN', '.dominio.com'); define('COOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('home').'/')); define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('siteurl').'/')); define('ADMIN_COOKIE_PATH',SITECOOKIEPATH.'wp-admin');

¿Donde es recomendable añadir este grupo de constantes?, pues precisamente debajo de los defines de multisitio, justo antes de:

/* ¡Eso es todo, deja de editar!, Feliz blogging. */


Configuración de cookies en wp-config.php

Haz clic en la imagen para ampliarla  

Con esta declaración de constantes para cookies se deja de usar la misma cookie para los diferentes dominios utilizados en la red de sitios, estableciendo una para cada sitio de la red y evitando bucles de redirecciones que no concluyen.

…es decir, ese intento reiterado de logearte en uno de lo sitios de la red y tener la sensación de que el formulario de acceso te está tomando el pelo.

 

 Problemas comunes – FAQs

Hay plugins que pueden devolver un error tipo:

The constant “COOKIE_DOMAIN” is defined (probably in wp-config.php). Please remove or comment out that define() line.

Esto sucede cuando se definen constantes como:

define('COOKIE_DOMAIN', $_SERVER[ ‘HTTP_HOST’ ] );

Algunos plugins como WordPress MU Domain Mapping no soportan el mapeo de dominios definidos en constantes como COOKIE_DOMAIN.

…de momento no he podido documentar otros problemas relacionados con plugins, pero si un día me los encuentro no te preocupes, editare este artículo y los añadiré por aqui para dejar constancia.

 

 Conclusiones

La configuración de rutas de cookies en una red de sitios de WordPress te ayuda a definir cada cookie para cada dominio o subdominio del multisitio y evitar ese molesto error que te he citado más arriba que acaba con la paciencia de cualquiera cuando se trata de acceder al dashboard de uno de los sitios.

     

¿Te ha resultado útil este artículo?

Promo hosting septiembre