style.css: versionar para evitar la caché del navegador  

 
daniel.martin.alonso@gmail.com
 daniel.martin.alonso@gmail.com
Usuario experto

Hola,

Un problema común en WordPress es que modificas las hojas de estilo en el archivo style.css y tienes que indicarle al cliente que fuerce el refresco del navegador para recargar las hojas de estilo.

Una forma de evitarlo es añadir un parámetro de versión al style.css de forma que cambie dicha versión cuando se hagan cambios. He encontrado un snippet a añadir en functions.php que lo hace a la perfección:

wp_enqueue_style( 'theme-styles', get_stylesheet_directory_uri() . '/style.css', array(), filemtime(get_stylesheet_directory() . '/style.css'));

Con este snippet, en el código fuente se ve algo similar a esto:

...wp-content/themes/nombre-theme/style.css?ver=1527693949

Mi problema es que en el código fuente veo que se está referenciando 2 veces el fichero style.css. Utilizo siempre Genesis con el child-theme correspondiente, y veo que Genesis carga por defecto el style.css. Por tanto, con el snippet anterior, se ve en el código fuente 2 líneas del tipo (la primera de Genesis y la segunda del snippet):

...wp-content/themes/enterprise-pro/style.css?ver=2.1.1
...
...wp-content/themes/enterprise-pro/style.css?ver=1527693949

Pregunta: ¿cómo puedo hacer para evitar esto? O si sabéis otra forma de evitar la caché de los navegadores, bienvenida sea...

Gracias de antemano,
Daniel.

URL del sitio: Contenido solo visible a usuarios registrados

Citar
Respondido : 30/05/2018 6:41 pm
Jhon
 Jhon
Soporte CMS Webempresa Moderator

Hola

Lo que sucede es que con el código que has agregado estas poniendo nuevamente en cola el style.css
Lo correcto sería quitar de cola el que te poner por defecto Genesis primero.

Lo puedes hacer con : https://codex.wordpress.org/Function_Reference/wp_dequeue_style , tendrías que saber el handle o identificador con el que se ha registrado.

Sin embargo si quieres refrescar los estilos de un theme Genesis revisa en tu child theme en el archivo functions.php si tienes una constante CHILD_THEME_VERSION , simplemente cambia el valor y con eso tendrías el refresco, revisa:

https://decodecms.com/refrescar-los-estilos-css-almacenados-en-el-navegador-de-un-usuario/

Saludos.

ResponderCitar
Respondido : 30/05/2018 7:00 pm

Gestor de Contraseñas - VPN Conexión Segura - Gestor 2FA (Segundo Factor de Autenticación

daniel.martin.alonso@gmail.com
 daniel.martin.alonso@gmail.com
Usuario experto

Hola Jhon,

Efectivamente, hay una constante como indicabas. Concretamente:

define( 'CHILD_THEME_VERSION', '2.1.1' );

¿Sería posible definir la constante con el valor de una función, de forma que se genere dinámicamente?

Por ejemplo, algo como:

define( 'CHILD_THEME_VERSION',  filemtime(get_stylesheet_directory() . '/style.css') );

De esta forma, la versión dependería de la fecha de creación del archivo, y no habría que hacerlo manualmente.

¿Hay forma de hacer esto?

Saludos,
Daniel.

ResponderCitar
Respondido : 30/05/2018 7:08 pm
daniel.martin.alonso@gmail.com
 daniel.martin.alonso@gmail.com
Usuario experto

Retiro la pregunta.

Lo he probado tal cual y funciona perfectamente.

Para quien utilice Genesis:

define( 'CHILD_THEME_VERSION',  filemtime(get_stylesheet_directory() . '/style.css') );

Saludos y gracias por la ayuda.

ResponderCitar
Respondido : 30/05/2018 7:15 pm

wpdoctor-revisa-la-salud-de-tu-wordpress

Jhon
 Jhon
Soporte CMS Webempresa Moderator

Hola

Que bueno que lo solucionaste.
Aunque te sugiero probar hacer una modificación y ver si el valor efectivamente cambia.

Saludos.

ResponderCitar
Respondido : 30/05/2018 7:19 pm
daniel.martin.alonso@gmail.com
 daniel.martin.alonso@gmail.com
Usuario experto

Probado y funciona perfecto, puesto que como versión se utiliza "filemtime" que devuelve (en tiempo UNIX) la fecha de última modificación.

Saludos,
Daniel.

ResponderCitar
Respondido : 30/05/2018 7:21 pm

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

Jhon
 Jhon
Soporte CMS Webempresa Moderator

Hola

Gracias por el aporte.

Saludos.

ResponderCitar
Respondido : 30/05/2018 7:24 pm