Desde desactivarla por roles hasta compartir caché entre usuarios: todo lo que necesitas saber para dominar la gestión personalizada de la caché de WP Rocket.
WP Rocket es sinónimo de rendimiento web en WordPress, y gran parte de su popularidad se debe a su equilibrio entre simplicidad y potencial de personalización. Uno de los aspectos menos explorados, pero más potentes, es la gestión de la caché de usuario, una función clave en sitios con usuarios registrados, membresías o áreas privadas.
Cuando se activa esta función, WP Rocket genera un conjunto de archivos de caché de página completa por cada usuario autenticado, separados de la caché de visitantes anónimos. Esta caché personalizada permite entregar contenido dinámico con la misma eficiencia de un sitio estático.
✅ Activar o desactivar la caché de usuario
Por defecto, esta opción se encuentra desactivada. Para activarla:
- Ve al panel de administración de WordPress.
- Dirígete a Ajustes > WP Rocket > Add-ons.
- Activa la opción «Caché para usuarios conectados».
Esto creará versiones cacheadas por usuario para cada página, lo cual puede ser útil en sitios de membresía, pero contraproducente para usuarios como administradores o editores, que necesitan ver los cambios en tiempo real.
🔧 Desactivar completamente la caché para usuarios conectados
Si prefieres que ningún usuario autenticado genere caché personalizada, puedes usar este fragmento:
function disable_cache_for_logged_in_users() { if ( is_user_logged_in() ) { add_filter( 'do_rocket_generate_caching_files', '__return_false' ); } } add_action( 'init', 'disable_cache_for_logged_in_users' );
Este hook asegura que WP Rocket no cree caché para ningún usuario con sesión iniciada.
🎯 Desactivar la caché por rol de usuario (ej. administradores o editores)
Puedes excluir roles concretos como administradores o editores con lógica condicional:
function disable_cache_for_specific_roles() { if ( is_user_logged_in() ) { $user = wp_get_current_user(); $excluded_roles = [ 'administrator', 'editor' ]; if ( array_intersect( $excluded_roles, (array) $user->roles ) ) { add_filter( 'do_rocket_generate_caching_files', '__return_false' ); } } } add_action( 'init', 'disable_cache_for_specific_roles' );
📌 Personaliza $excluded_roles
con los roles que quieras excluir.
👤 Desactivar la caché para usuarios concretos
Ideal si deseas excluir a ciertos usuarios por su nombre o email:
function disable_cache_for_specific_users() { if ( is_user_logged_in() ) { $current_user = wp_get_current_user(); $excluded_users = [ 'usuario_demo', // Por nombre de usuario '[email protected]' // Por email ]; if ( in_array( $current_user->user_login, $excluded_users ) || in_array( $current_user->user_email, $excluded_users ) ) { add_filter( 'do_rocket_generate_caching_files', '__return_false' ); } } } add_action( 'init', 'disable_cache_for_specific_users' );
♻️ Purga de caché automática
Tras desactivar la caché con código, es recomendable limpiar el contenido ya generado:
function clean_wp_rocket_cache() { if ( function_exists( 'rocket_clean_domain' ) ) { rocket_clean_domain(); } } register_activation_hook( __FILE__, 'clean_wp_rocket_cache' );
Para forzar la generación de un nuevo archivo de configuración:
function regenerate_wp_rocket_config() { if ( function_exists( 'rocket_generate_config_file' ) ) { rocket_generate_config_file(); } }
👥 Usar la misma caché para todos los usuarios conectados
Poco habitual, pero útil en entornos controlados donde todos los usuarios ven el mismo contenido:
add_filter( 'rocket_common_cache_logged_users', '__return_true' );
Este hook fuerza a WP Rocket a servir una caché común para todos los usuarios conectados, como si fueran usuarios anónimos.
⚠️ No recomendado en e-commerce o webs con contenido dinámico por usuario.
⚠️ Impedir caché y optimizaciones en tiempo real
Para situaciones de administración o desarrollo, se pueden definir constantes que bloquean toda caché y optimización:
function donotcache_for_admins() { if ( current_user_can( 'administrator' ) ) { define( 'DONOTCACHEPAGE', true ); define( 'DONOTROCKETOPTIMIZE', true ); } } add_action( 'template_redirect', 'donotcache_for_admins', 1 );
🔔 Mostrar aviso si la caché está activa para administradores
Buena práctica para recordar a administradores que están navegando con caché activa:
function admin_notice_cache_enabled() { if ( current_user_can( 'manage_options' ) && get_rocket_option( 'cache_logged_user' ) ) { echo '<div class="notice notice-warning"><p><strong>Advertencia:</strong> La caché de usuario está activa. Puedes estar viendo una versión cacheada.</p></div>'; } } add_action( 'admin_notices', 'admin_notice_cache_enabled' );
🧩 ¿Dónde añadir estos códigos?
Opciones recomendadas:
- En el archivo
functions.php
del child theme. - Con un plugin de fragmentos como Code Snippets.
- En un mu-plugin (plugin obligatorio).
- O creando tu propio plugin personalizado con
register_activation_hook()
yregister_deactivation_hook()
.
📌 Recomendaciones prácticas finales
Situación | Recomendación |
---|---|
Sitio con membresía | ✅ Activa caché por usuario |
Administrador / desarrollo activo | ❌ No usar caché personalizada |
Tienda online (WooCommerce) | ⚠️ Usar con extrema precaución |
Academia con LMS | ✅ Ideal para acelerar navegación |
Usuarios con contenido homogéneo | 🟡 Usar caché común opcionalmente |
Conclusión
La caché de usuario de WP Rocket es una función avanzada que, bien configurada, permite mantener un equilibrio entre rendimiento y personalización del contenido. Saber cuándo activarla, cómo personalizarla y qué usuarios deben estar exentos marca la diferencia entre una web rápida y una difícil de gestionar.
Los hooks y fragmentos de código presentados aquí ofrecen control total sobre esta funcionalidad, permitiendo adaptarla a todo tipo de escenarios profesionales en WordPress.