web-dev-qa-db-fra.com

"wp_enqueue_style ();" ne charge pas le nouveau style édité

Tout d'abord, désolé mon anglais. J'utilise local par volant pour gérer les fichiers de mon site et ma version de wordpress est 4.9.4.

Voici le problème, quand j'utilise

 wp_enqueue_style('wharever', get_stylesheet_uri());

Pour charger style.css à la première fois avec un contenu simplement simple à l'intérieur:

body { color: orange; }

Tout va bien, et nous avons une page avec tout le texte en orange, mais lorsque je change la couleur du corps de style.css en vert (ou autre), ils ne changent tout simplement pas et sont toujours en orange.

PS .: dans wp_enqueue_style, j’ai changé le paramètre de version et il a changé, mais seulement la première fois et collé à la première couleur que j’ai mise pour la version qui a été mise.

S'il s'agit d'une fonctionnalité de wordpress, comment puis-je désactiver cette option? Cela ne me semble pas très utile de savoir que nous ne pouvons pas changer de style.css à volonté, juste pour tester sans changer de version.

2
DVDSON

C'est un problème de cache. Pour contourner ce problème, j’ajoute à la feuille de style uri une chaîne aléatoire qui décourage le navigateur de la mettre en cache.

Tout d'abord, vous avez besoin d'une chaîne aléatoire. J'utilise cette fonction simple pour en générer un.

function randomAlphaNumeric($length) { $pool = array_merge(range(0,9), range('a', 'z'),range('A', 'Z')); $key=''; for($i=0; $i < $length; $i++) { $key .= $pool[mt_Rand(0, count($pool) - 1)]; } return $key; }

Maintenant, utilisez-le dans votre file d’attente comme ceci:

wp_enqueue_style('wharever', get_stylesheet_uri().'?random='.randomAlphaNumeric(5));

1
n8bar

Une autre solution consiste à utiliser filemtime pour la suppression du cache, de sorte que le dernier horodatage modifié soit utilisé en tant que variable de chaîne de requête.

Cela présente l’avantage de continuer à utiliser le cache du navigateur et pourtant, un nouveau fichier est servi lorsque le fichier est réellement modifié car la chaîne de requête change. par exemple.

$lastmodtime= filemtime(get_stylesheet_directory().'/style.css');
wp_enqueue_style('whatever', get_stylesheet_uri(), array(), $lastmodtime);
1
majick