web-dev-qa-db-fra.com

Supprimer? Ver = de wp_register_script

Je commence à avoir des ennuis au test de vitesse de Google concernant les chaînes de requête dans mes scripts. Donc, j'essaie de les supprimer en transmettant false comme argument pour ce paramètre. Cependant, cela ne semble pas avoir d'effet:

wp_register_script('myscript', get_bloginfo('template_directory').'/scripts.myversionnumber.js',false,false,true);
wp_enqueue_script('myscript');

PS: la partie "myversionnumber" du nom de fichier js est mon moyen de contrôler le cache/la gestion des versions plutôt que l’approche? Ver = qui déclenche apparemment certains serveurs proxy (selon le test de vitesse de page Google):

Supprimer les chaînes de requête des ressources statiques L'activation de la mise en cache publique dans les en-têtes HTTP pour les ressources statiques permet au navigateur de télécharger des ressources à partir d'un serveur proxy proche plutôt que d'un serveur Origin distant. Apprendre encore plus

Suggestions pour cette page

Ressources avec un "?" dans l'URL ne sont pas mis en cache par certains serveurs de mise en cache proxy. Supprimez la chaîne de requête et encodez les paramètres dans l'URL des ressources suivantes:

8
Scott B

Je pense que vous devez passer NULL en tant que 4ème paramètre.

wp_register_script(
    'myscript',
    get_bloginfo('template_directory').'/scripts.myversionnumber.js',
    false,
    NULL,
    true);
wp_enqueue_script('myscript');
8
SickHippie

Avant-propos

J'ai résolu ce problème de manière très différente de SickHippie et chrisguitarguy et je suppose que ce n'est pas la façon dont il est censé être résolu, mais cela fonctionne vraiment bien pour moi.

Le code...

Je mets cet extrait de code à la fin du fichier functions.php de mon thème:

function remove_cssjs_querystring( $src ) {
  if( strpos( $src, '?rev=' ) ) // copy/paste this line and the next one to take away what you want from the end of your css/js
    $src = remove_query_arg( 'rev', $src );
  if( strpos( $src, 'ver=' ) )
    $src = remove_query_arg( 'ver', $src );
  return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_querystring', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_querystring', 10, 2 );

D'où est venue l'idée ...

Je cherchais cela sur Google et j'ai trouvé cet article , mais je continuais à avoir un problème avec css/js: à ce stade, mon code avait encore (ici et là) à la fin quelque chose comme .../some-stylesheet.css?rev=... et j'ai pensé à étendre un peu l'extrait de code pour inclure tout ce qui aurait pu être après .css.

3
vcoppolecchia

Vous pouvez passer null comme valeur de version à wp_register_script ou wp_enqueue_script et la chaîne de requête devrait être supprimée.

<?php
wp_enqueue_script(
   'myscript',
   '/path/to/script.js',
   array(),
   null
);
3
chrisguitarguy