WordPress : wp_script_add_data ne semble pas fonctionner
J’ai essayé de suivre le codex en suivant divers fils ici, simples, copier-coller divers exemples mais en vain. Cela ne fonctionne tout simplement pas.
A-t-il été déprécié ? Est-ce que quelqu’un a réussi à faire fonctionner cela dans une version récente de WP ou 5.7 spécifiquement
function my_scripts() {
wp_enqueue_script( 'bs-popper', 'https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.1/dist/umd/popper.min.js', array('jquery'), _S_VERSION, true );
wp_script_add_data('bs-popper' , array('integrity') , array('sha384-XXXXXXXXXXXXXXXX'));
}
add_action( 'wp_enqueue_scripts', 'my_scripts' );
[EDIT] Simple : l’exemple ci-dessus provenait d’une version qui en avait plus d’une mais celle-ci simple ne fonctionne pas non plus
wp_script_add_data('bs-popper' , 'integrity' , 'sha384-XXXXXXX');
Solution n°1 trouvée
Ce n’est pas ce qui wp_script_add_data()
fait.
Il ne prend pas en charge l’ajout d’attributs arbitraires à la balise de script. Il vous permet d’ajouter des métadonnées au script mis en file d’attente, mais par défaut, la seule clé prise en charge par WordPress est 'conditional'
, qui est utilisée pour indiquer au script s’il doit être chargé dans certaines versions d’IE. Par exemple, ceci :
wp_script_add_data('bs-popper' , 'conditional' , 'IE 9');
Se traduira par ceci:
<!--[if IE 9]>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.1/dist/umd/popper.min.js" id="bs-popper-js">
<![endif]-->
Mais ça:
wp_script_add_data('bs-popper' , 'attribute' , 'value');
Ne fera rien.
Si vous souhaitez pouvoir ajouter des attributs aux scripts de cette manière, vous devez utiliser le script_loader_tag
filtre pour filtrer le code HTML de la <script>
balise afin d’ajouter l’attribut si les données ont été ajoutées avec wp_script_add_data()
. Il y a un exemple de cela ici, mais pour votre cas d’utilisation, cela ressemblerait à ceci :
add_filter(
'script_loader_tag',
function( $tag, $handle ) {
$integrity = wp_scripts()->get_data( $handle, 'integrity' );
if ( $integrity ) {
$tag = str_replace( '></', ' integrity="'. esc_attr( $integrity ) .'"></', $tag );
}
return $tag;
},
10,
2
);
0 commentaire