Comment changer la version de .css dans WordPress?


13

Comme le titre le suggère, je ne sais pas trop comment changer la version d'un fichier .css dans mon thème. Pour le moment, le versioning .css est comme ceci:

<link rel='stylesheet' id='xxxx'  href='https://www. site css/ styles.css?ver=4.6.1' type='text/css' media='all' />

Existe-t-il un script que je dois exécuter - où dois-je chercher pour créer la version 4.6.2 comme ci-dessus?


Comment obtenez-vous ce script à imprimer?
Nathan Powell

Réponses:


18

Le quatrième argument, $verpour wp_enqueue_style()vous permet de définir la version:

wp_enqueue_style( string $handle,
                  string $src = false,
                  array $deps = array(),
                  string|bool|null $ver = false,
                  string $media = 'all' );

Selon les documents:

$ ver (string | bool | null) (Facultatif) String spécifiant le numéro de version de la feuille de style, s'il en a un, qui est ajouté à l'URL en tant que chaîne de requête à des fins de contournement du cache. Si la version est définie sur false, un numéro de version est automatiquement ajouté égal à la version actuelle de WordPress installée. S'il est défini sur null, aucune version n'est ajoutée. Valeur par défaut: false


Merci pour cela - je suppose que ce que je demande est «comment faire ça» - c'est-à-dire «comment exécuter ce script pour générer une nouvelle version»? J'espère que cela a du sens ...
Henry

Souhaitez-vous mettre à jour votre question avec le code où wp_enqueue_style()est appelé? WordPress gère le versionnement automatiquement en fonction de l'explication de $verpubliée dans ma réponse, donc je suppose que $ ver est défini sur false. Si vous voulez le changer, changez l'argument $ ver en une nouvelle chaîne (je n'utiliserais pas 4.6.2 puisque cette convention est déjà utilisée par WordPress), mais techniquement cela fonctionnerait.
Dave Romsey

1
Vous pouvez facilement y substituer n'importe quoi. Par exemple $ver = time();, une nouvelle version serait créée à chaque fois que vous accédiez à la page, et la version serait l'heure.
Nathan Powell

8

Surtout, utilisez la wp_enqueue_style()fonction du thème dans leur fichier functions.php pour ajouter une feuille de style dans l'en-tête. Voici comment savoir si votre thème fait de même.

Ouvrez votre wp-content/themes/YOUR_THEME_NAME/functions.phpfichier et découvrez la ligne qui ajoute la feuille de style, comme:

wp_enqueue_style('main_style',  get_stylesheet_directory_uri() . '/style.css');

Ou comme:

wp_enqueue_style( 'twentysixteen-style', get_stylesheet_uri() );

Vous pouvez rechercher l'ID (sauf pour une -csspartie) ... si l'ID est: main_style-cssrecherchez juste main-styledans votre fichier functions.php, et vous devriez probablement trouver la ligne de code que vous cherchiez.

Maintenant que vous avez trouvé le code et que vous savez que votre thème ajoute cette feuille de style à l'aide wp_enqueue_style()du fichier functions.php. Vous devez mettre à jour ce code pour la version.

$style_ver = filemtime( get_stylesheet_directory() . '/style.css' );
wp_enqueue_style( 'main_style', get_stylesheet_directory_uri() . '/style.css', '', $style_ver );

Comme vous pouvez le voir, ce code obtient la dernière heure modifiée du fichier style.css en utilisant la filemtime()fonction PHP et il convertit également l'heure en horodatage en utilisant la time()fonction PHP juste pour rendre les choses propres.

Si vous ne voulez pas que la version change dynamiquement à chaque fois, vous pouvez simplement le faire:

wp_enqueue_style( 'main_style', get_stylesheet_directory_uri() . '/style.css', '', '1.5' );

C'est à peu près ça. Paix!


Attention: vous devez utiliser l' get_stylesheet_directory()intérieur de filemtime()car il renverra un chemin système.
Half Crazed

3

Je n'ai pas tiré grand-chose de ces réponses, alors j'ai pensé écrire ce qui a fonctionné pour moi. Je sais que le codex dit:

$ ver (string | bool | null) (Facultatif) String spécifiant le numéro de version de la feuille de style, s'il en a un, qui est ajouté à l'URL en tant que chaîne de requête à des fins de contournement du cache. Si la version est définie sur false, un numéro de version est automatiquement ajouté égal à la version actuelle de WordPress installée. S'il est défini sur null, aucune version n'est ajoutée. Valeur par défaut: false

Mais il est très cryptique de savoir comment cela fonctionne réellement. Je n'ai pas pu obtenir de numéro de version wp_enqueue_stylepour déclencher un paramètre de requête comme ?ver=1.2.3sur ma feuille de style. Cependant, le définir sur true autorise la version déclarée de cache bustla feuille de style dans la feuille de style. (continuer à lire)

Dans votre style.css, vous devez nommer votre thème. Ceci est requis par WP. Cependant, d'autres options, telles que versionla version booléenne de wp_enqueue_style, font également référence.

/******************************************************************
Site Name: MySite.com
Author: @BenRacicot
Version: 4.0 // <- wp_enqueue_style's version number
Stylesheet: Main Stylesheet
******************************************************************/

Maintenant, quand je change ça, Version: 4.1je reçoisstyle.css?cache-bust=0.24135995238933283


2

Vous pouvez simplement utiliser time()à un moment de mise en file d'attente un style ou un script comme celui-ci.

Sans utiliser la wp_enqueue_style()fonction wordpress

<link rel='stylesheet' id='xxxx'  href='https://www. site css/ styles.css?ver=<?php echo time(); ?>' type='text/css' media='all' />

Utilisation de la wp_enqueue_style()fonction

wp_enqueue_style('style_sheet_name', get_stylesheet_directory_uri() . '/custom_style.css', '', time());

OU

wp_enqueue_style('style_sheet_name', get_stylesheet_uri() . '/custom_style.css', '', time());

1
Je ne recommanderais pas cela, je suis presque sûr que cela va vaincre la mise en cache de version tous ensemble.
Fabian von Ellerts
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.