2016-09-26 2 views
0

Je voudrais charger le maximum de mes scripts javascripts async pour accélérer le rendu. Malheureusement, différer briser beaucoup de parties de mon site Web wordpress et j'ai besoin de l'exclure de la charge asynchrone. Un fichier de mon thème utilise le codeAttributs de données dans wordpress wp_register_script et pagespeed

wp_register_script('tie-masonry',  get_template_directory_uri() . '/js/isotope.js',   array('jquery'), false, true); 

Pagespeed est le pagespeed-qui ont besoin sans reporter les données attribut Comme <script data-pagespeed-no-defer>...</script> l'exclure.

Est-il possible d'ajouter cet attribut à wp_register_script, ou dois-je l'exclure du fichier php et l'insérer manuellement dans la page Web?

+0

Ceci peut vous aider http://wordpress.stackexchange.com/a/111882/101048 – mokiSRB

+0

Merci. Mais cela semble extrêmement compliqué, ne serait-il pas plus rapide avec moins de requêtes d'inclure le script juste dans la tête avec l'attribut? – Deex

Répondre

3

Depuis la version 4.1.0, il existe un hook de filtre 'script_loader_tag', parfait pour cette tâche.

add_filter('script_loader_tag', 'my_script_loader_tag', 10 ,2); 
function my_script_loader_tag($tag, $handle){ 
    if ($handle == 'tie-masonry') { 
     return str_replace('<script', '<script data-pagespeed-no-defer', $tag); 
    } 
    return $tag;  
} 
+0

Merci Andy, une question si j'utilise beaucoup de ces crochets, cela aura-t-il un impact important sur le temps de chargement? – Deex

+0

Pas de souci. Ceci est juste un simple crochet de filtre. Jetez un oeil sur le code source [ici] (https://developer.wordpress.org/reference/classes/wp_scripts/do_item/) Ligne 356 –