web-dev-qa-db-fra.com

Mise en cache et versioning pour rtl.css

J'utilise filemtime() pour ajouter un numéro de version pour différents fichiers .css et .js dans un thème WordPress personnalisé.

J'ai utilisé la réponse acceptée décrite ici comme ligne directrice; Cependant, j'utilise les fonctions wp_retister_style() et wp_register_script() pour enregistrer mes fichiers .css et .js, respectivement, et les charge normalement via wp_enqueue_style() et wp_enqueue_script(). À titre d’exemple, j’enregistre le fichier sigle.css de cette manière:

wp_register_style('xyz_single', get_template_directory_uri() . '/css/single.css', false, filemtime(get_template_directory() . '/css/single.css'));

Le quatrième paramètre de la fonction ci-dessus ajoutera? Ver = nnnnnnnnà la feuille de style. La sortie finale sera quelque chose comme single.css?ver=nnnnnnnn, oùnnnnnnnnest un nombre représentant l’horodatage du fichier modifié afin d’être rechargé. Lorsque je modifie le thème, les problèmes de mise en cache sont résolus.

Maintenant, à ma question.

Dans mon thème custome, j'utilise rtl.css, qui est chargé automatiquement pour moi lorsque wp_head() est appelé. Alors, comment puis-je ajouter rtl.css pour inclure un numéro de version?


Plus d'information

Dans header.php, je charge style.css comme suit:

<link href="<?php echo get_stylesheet_uri() . '?ver=' . filemtime(get_stylesheet_directory() . '/style.css'); ?>" rel="stylesheet" type="text/css" />

Je charge toutes les autres feuilles de style en utilisant wp_register_style() comme décrit ci-dessus, suivi de wp_enqueue_style(). Voici un exemple:

wp_register_style('xyz_single', get_template_directory_uri() . '/css/single.css', false, filemtime(get_template_directory() . '/css/single.css'));

wp_enqueue_style('xyz-single');

Cependant, rtl.css est automatiquement chargé lorsque j'appelle wp_head() dans header.php. S'il vous plaît lisez cet article sur la façon dont wp_head() charge rtl.css; et donc ma question, comment puis-je ajouter un numéro de version à rtl.css s'il est appelé automatiquement?

7
Greeso

Vous chargez le fichier-rtl.css en utilisant la méthode automatique de WordPress, c’est-à-dire qu’un rtl.css dans le dossier du thème sera automatiquement chargé par WordPress s’il présente et la direction de la langue actuelle ir rtl ( vous devriez ajouter cette information à la question, il a été difficile de comprendre comment vous chargez le fichier). Ce processus définit locale_stylesheet_uri que vous pouvez utiliser pour modifier l'URL de la feuille de style de paramètres régionaux afin que vous puissiez y ajouter le paramètre version:

add_filter( 'locale_stylesheet_uri', function ($localized_stylesheet_uri) {
    $time_ver = filemtime( get_stylesheet_directory() . '/rtl.css' );
    return add_query_arg( array('ver' => $time_ver), $localized_stylesheet_uri );
});

Si vous avez également besoin de gérer les dépendances, vous devrez charger rlt.css file avec wp_enqueue_style comme tout autre fichier css. Aucun moyen de gérer les dépendances avec le mode "auto".

6
cybmeta

D'après l'article que vous avez cité, il semble y avoir deux options simples:

  1. empêcher l'inclusion automatique en supprimant les actions qui le rendent à ajouter,

remove_action( 'wp_head', 'locale_stylesheet' );

et le mettre en file d'attente avec votre propre code, quelque chose comme

global $$wp_locale; 

$stylesheet_dir_uri = get_stylesheet_directory_uri();
$dir = get_stylesheet_directory();
$locale = get_locale();


if ( !empty($wp_locale->text_direction) && file_exists("$dir/{$wp_locale->text_direction}.css") )
        enqueue "$stylesheet_dir_uri/{$wp_locale->text_direction}.css";
  1. utilisez le filtre 'locale_stylesheet_uri' et ajoutez le suffixe que vous préférez à l'URL, ou renvoyez simplement '' et mettez-le en file d'attente de la même manière que dans # 1
2
Mark Kaplun