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
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.
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.
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.
Hola
Que bueno que lo solucionaste.
Aunque te sugiero probar hacer una modificación y ver si el valor efectivamente cambia.
Saludos.
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.
Hola
Gracias por el aporte.
Saludos.