2017-06-29 3 views
0

J'essaie d'utiliser les fonctions wp_register_script et wp_enqueue_script FUNCTION sur WordPress pour mettre en file d'attente un script qui a deux attributs: "integrity" et "crossorigin".Script Wordpress avec intégrité et crossorigin

Normalement, j'utiliser PHP et mon code ressemble:

wp_register_script('jquery', 'http' . ($_SERVER['SERVER_PORT'] == 443 ? 's' : '') . '://code.jquery.com/jquery-3.1.1.slim.min.js', false, null); 
wp_enqueue_script('jquery'); 

Avec tout autre script. Le wp_register_script prend cinq paramètres (dans ce cas quatre) $ handle, $ src, $ deps, $ ver ($ media). Je me demande où je peux ajouter les deux attributs. J'ai déjà essayé:

wp_register_script('jquery', 'http' . ($_SERVER['SERVER_PORT'] == 443 ? 's' : '') . '://code.jquery.com/jquery-3.1.1.slim.min.js'.'integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n"', false, null); 
    wp_enqueue_script('jquery'); 

Mais cela n'a pas fonctionné.

Toute personne ayant eu le même problème? Ceci est le script original de bootstrap 4, qui a aussi bootstrap et attache avec les mêmes attributs (intégrité et crossorigin) donc, comme c'est assez nouveau, toute sorte d'aide sera très appréciée.

Répondre

1

Vous pouvez utiliser le script_loader_tag crochet (la partie principale est en fait pas mon code, mais je ne honnêtement » Je me souviens où je l'ai eu, probablement quelque part ici sur SO ou WP Stack Exchange):

add_filter('script_loader_tag', 'add_attribs_to_scripts', 10, 3); 
function add_attribs_to_scripts($tag, $handle, $src) { 

// The handles of the enqueued scripts we want to defer 
$async_scripts = array(
    'jquery-migrate', 
    'sharethis', 
); 

$defer_scripts = array( 
    'contact-form-7', 
    'jquery-form', 
    'wpdm-bootstrap', 
    'frontjs', 
    'jquery-choosen', 
    'fancybox', 
    'jquery-colorbox', 
    'search' 
); 

$jquery = array(
    'jquery' 
); 

if (in_array($handle, $defer_scripts)) { 
    return '<script src="' . $src . '" defer="defer" type="text/javascript"></script>' . "\n"; 
} 
if (in_array($handle, $async_scripts)) { 
    return '<script src="' . $src . '" async="async" type="text/javascript"></script>' . "\n"; 
} 
if (in_array($handle, $jquery)) { 
    return '<script src="' . $src . '" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous" type="text/javascript"></script>' . "\n"; 
} 
return $tag; 
} 
2

Ceci est la syntaxe correcte:

<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js" integrity="sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30=" crossorigin="anonymous"></script> 

"intégrité" et "crossorgin" ne font pas partie de l'URL. Ils font partie de l'étiquette de script.

Malheureusement, Wordpress ne peut pas gérer les attributs des scripts mis en file d'attente pour le moment.
Mais ils travaillent là-dessus ... Statut:-évaluation des besoins :-)
=>Ticket 22249/Wordpress Core