Comment puis-je supprimer jquery du frontside de mon WordPress?
Mon site wordpress est un peu lourd à télécharger. Sur le frontend, son y compris jQuery inutilement. Dans mon firebug il ressemble:
jquery.js?ver=1.3.2
Et
jquery.form.js?ver=2.02m
Je n'ai pas besoin qu'ils soient inclus pour moi.
Je suis heureux pour eux de rester dans le wp-admin, mais je voudrais qu'ils ne se chargent pas sur le frontend.
J'ai trouvé le fichier que je pense qui les charge dans wp-includes/script-loader.php
mais je ne sais pas quoi décommenter ou quoi faire pour l'enlever complètement pour le devant.
Existe-t-il un moyen de le faire, en supprimant jquery sans ruiner le back-end?
9 réponses
JQuery peut être ajouté par votre thème. Si votre thème l'ajoute correctement, il devrait utiliser la fonction wp_enqueue_script()
. Pour supprimer JQuery, utilisez simplement la fonction wp_deregister_script()
.
wp_deregister_script('jquery');
La Suppression de JQuery pour l'ensemble de votre site peut entraîner des conséquences inattendues pour votre section d'administration. Pour éviter de supprimer JQuery sur vos pages d'administration, utilisez ce code à la place:
if ( !is_admin() ) wp_deregister_script('jquery');
Maintenant, seules les pages qui ne sont pas des pages admin exécuteront la fonction wp_deregister_script()
.
Ajoutez ce code aux fonctions.php fichier dans votre répertoire de thème.
Toutes les autres solutions sont maintenant obsolètes depuis wordpress 3.6
add_filter( 'wp_default_scripts', 'change_default_jquery' );
function change_default_jquery( &$scripts){
if(!is_admin()){
$scripts->remove( 'jquery');
$scripts->add( 'jquery', false, array( 'jquery-core' ), '1.10.2' );
}
}
La bonne méthode pour supprimer complètement un style ou un script est de le désactiver et de le désenregistrer. Vous devez également noter que les scripts frontaux sont gérés via le wp_enqueue_scripts
hook tandis que les scripts back end sont gérés via le admin_enqueue_scripts
hook.
Donc, dans cet esprit, vous pouvez faire ce qui suit
add_filter( 'wp_enqueue_scripts', 'change_default_jquery', PHP_INT_MAX );
function change_default_jquery( ){
wp_dequeue_script( 'jquery');
wp_deregister_script( 'jquery');
}
Modifier 1
Cela a été entièrement testé sur Wordpress version 4.0 et fonctionne comme prévu.
Modifier 2
Comme preuve de concept, collez le code suivant dans vos fonctions.php. Cela imprimera un message de succès ou d'échec dans la tête de votre site, back end et front end
add_action( 'wp_head', 'check_jquery' );
add_action( 'admin_head', 'check_jquery' );
function check_jquery() {
global $wp_scripts;
foreach ( $wp_scripts->registered as $wp_script ) {
$handles[] = $wp_script->handle;
}
if( in_array( 'jquery', $handles ) ) {
echo 'jquery has been loaded';
}else{
echo 'jquery has been removed';
}
}
Regardez dans vos fichiers de thème.
Wp-contenu / thèmes / en-tête.php
Peut inclure le .fichiers js.
Wordpress ajoute cet appel jQuery via une balise de modèle nommée <?php wp_head(); ?>
, qui apparaît dans la plupart des thèmes, et est nécessaire pour que certains plugins fonctionnent.
Cela pourrait être ennuyeux, non seulement à cause du chargement, mais aussi parce qu'il pourrait tuer jQuery précédemment chargé, et pourrait même gêner certains plugins qui essaient également de charger jQuery.
La solution rapide ouvre l'en-tête du fichier.php dans le répertoire de votre thème, et en ajoutant:
<?php wp_deregister_script('jquery'); ?>
Juste avant
<?php wp_head(); ?>
Ou tout simplement combinez les deux en:
<?php wp_deregister_script('jquery'); wp_head(); ?>
Une explication plus technique pourrait être trouvée ici
JQuery.js est juste 15KB si vous utilisez la version minifiée, et ceux-ci seraient totalement absents si vous utilisiez un thème qui ne l'exige pas.
Vous devriez probablement chercher un thème léger sans jQuery au lieu de le pirater et de voir le thème se briser à plusieurs endroits parce qu'ils recherchent ces fichiers js.
Regardez dans la source de votre page rendue; Wordpress inclut souvent jQuery par défaut lorsque <?php wp_head(); ?>
est appelé en-tête.php, donc vous pouvez toujours voir jQuery inclus dans votre site.
Si vous supprimez <?php wp_head(); ?>
dans l'en-tête.php, vous pourriez perdre d'autres fonctionnalités de plugins, autant de plugins "crochet" dans Wordpress à ce moment-là.
Mais inclure jQuery n'est pas si important. C'est petit et Wordpress en dépend pour certaines choses.
J'ai pu réduire de 2,2 secondes la vitesse de chargement de ma Page "événements" en désinscrivant jQuery. jQuery est agréable à avoir mais à mon avis la vitesse de la page est tellement plus importante.
Vous n'aurez jamais un utilisateur traîner pendant plus de 5 secondes, donc si jQuery vous cause des problèmes de performance, alors je dis se débarrasser.
function my_init() {
if (!is_admin()) {
wp_deregister_script('jquery');
wp_register_script('jquery', false);
}
}
add_action('init', 'my_init');
C'est correct - supprime la bibliothèque jquery JS. Le Code des autres réponses supprime tous les js (même les js que vos plugins installés ajoutent)
Testé sur 4.3.1