He encontrado una solución provisional para un problema no muy común, pero lejos de ser un problema sin precedentes con la interacción de las populares soluciones de almacenamiento en caché WP con las cookies, en este caso, las cookies de comentarios estándar de WP. Mi solución también tiene que ver con la excepción raramente bien definida de "usuarios conocidos" al servicio de archivos en caché. Si es utilizable o no, me imagino que explicarlo y posiblemente aprender por qué es una mala idea puede ser generalmente instructivo.
He probado mi método con WP Super Cache, W3 Total Cache y Comet Cache. El que analicé en detalle mientras estudiaba este problema fue WP Super Cache ("WPSC" en adelante), así que lo usaré como mi ejemplo principal.
ANTECEDENTES
Cuando un hilo de comentarios estándar de WP se configura para permitir a los visitantes comentar, las cookies de comentarios se establecen para cualquier comentarista que no sea un usuario registrado y haya iniciado sesión, con privilegios reales de comentarios sujetos a verificaciones adicionales. En mi opinión, la configuración más común es que un comentarista solo debe proporcionar un nombre y una dirección de correo electrónico. Estas se almacenan dentro de dos cookies del navegador, generalmente comment_author_ . COOKIEHASH
y comment_author_email_ . COOKIEHASH
. COOKIEHASH
se define de acuerdo con las opciones del usuario.
Si se configura para entregar archivos recién generados a "usuarios conocidos", WPSC determina si debe servir un archivo en caché en base a varias comprobaciones: los usuarios registrados obtienen archivos nuevos, y también los visitantes que pueden comentar. " Las últimas se identifican principalmente por la presencia en sus navegadores de comment_author_
cookies que no están identificadas de forma específica o única para el usuario en particular por el COOKIEHASH
(generalmente, pero no siempre, una versión codificada en MD5 de "siteurl" registrada en el sitio opciones).
Lo que parece ser la parte clave del código WPSC, de wp-cache-phase1.php LL371-383, usa un patrón RegEx para obtener una cadena, alternando entre las cookies:
$regex = "/^wp-postpass|^comment_author_";
if ( defined( 'LOGGED_IN_COOKIE' ) )
$regex .= "|^" . preg_quote( constant( 'LOGGED_IN_COOKIE' ) );
else
$regex .= "|^wordpress_logged_in_";
$regex .= "/";
while ($key = key($_COOKIE)) {
if ( preg_match( $regex, $key ) ) {
wp_cache_debug( "wp_cache_get_cookies_values: $regex Cookie detected: $key", 5 );
$string .= $_COOKIE[ $key ] . ",";
}
next($_COOKIE);
}
Ahora, si estuviera trabajando estrictamente en PHP, podría volver a producir o enlazar las funciones principales de WP y obtener el comment_author_ . COOKIEHASH
normal establecido por la plantilla de comentarios, pero estoy trabajando en jQuery utilizando el conector jQuery Cookie. en. Sin embargo, como puede ver si mira RegEx, a la función WPSC no le importa el COOKIEHASH
: se satisface si encuentra comment_author_
.
MI SOLUCIÓN TENTATIVA
$.cookie( 'comment_author_proxyhash', 'proxy_author', { path: '/' } );
Para aquellos que no están familiarizados con jQuery Cookie: Lo anterior establece una cookie de sesión simple con la clave = comment_author_proxyhash
y value = proxy_author
, válida para todo el sitio. (También, para aquellos que usan jQuery Cookie y WP, además de sustituir previamente a la familiar jQuery $
para el WP jQuery
, también ya he establecido $.cookie.raw = true;
.)
Agregué la línea a mi secuencia de comandos jQuery y voila! , WPSC, W3 Total Cache y Comet Cache están actuando como quiero. Después de usar el script y volver a cargar, obtengo páginas nuevas. Si coloco un comentario real, se establecen las cookies normales comment_author_
y comment_author_email_
, y no parece haber ningún problema con la coexistencia.
Quizás un defecto sería que la cookie "proxyhash" viajará con el usuario siempre y cuando él o ella mantenga la sesión abierta, pero eso no me parece un problema importante, o incluso una advertencia. Desde luego, nunca he oído que alguien se queje de que ocurra algo así con una de las cookies habituales.
Pero tal vez haya algo que me esté faltando, y que esté por descubrir mucho para mi desgracia, y potencialmente también para mi edificación. O tal vez haya una manera relativamente simple y práctica de replicar el COOKIEHASH
en jQuery, que también cubra casos de uso alternativos ... o lograr el mismo efecto final por otros medios: otras formas de engañar a los complementos de almacenamiento en caché. tratando al visitante como un comentarista ...
Si no, ¿hay alguna buena razón para NO enviar esto o algo parecido al universo en un complemento?