web-dev-qa-db-fra.com

Comment puis-je supprimer jquery de l'avant de mon WordPress?

Mon site wordpress est un peu lourd à télécharger. Sur le frontend, son y compris jquery inutilement. Dans mon firebug cela ressemble à:

jquery.js?ver=1.3.2

et

jquery.form.js?ver=2.02m

Je n'ai pas besoin que ceux-ci soient inclus pour moi.

Je suis content qu'ils restent dans le wp-admin, mais j'aimerais qu'ils ne se chargent pas sur le front-end.

J'ai trouvé le fichier qui, je pense, est en train de les charger dans wp-includes/script-loader.php mais je ne sais pas trop quoi décommenter ni quoi faire pour le supprimer complètement pour le premier plan.

Existe-t-il un moyen de supprimer jQuery sans détruire le back-end?

29
willdanceforfun

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 avoir des conséquences inattendues sur votre section admin. Pour éviter de supprimer JQuery sur vos pages d’administration, utilisez plutôt ce code:

if ( !is_admin() ) wp_deregister_script('jquery');

Désormais, seules les pages qui ne sont pas des pages d'administration exécuteront la fonction wp_deregister_script()

Ajoutez ce code au fichier functions.php de votre répertoire de thème.

30
NerdStarGamer

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' );
    }
}
31
deweydb

La bonne méthode pour supprimer complètement un style ou un script consiste à le retirer de la liste et le désenregistrer. Vous devez également noter que les scripts frontaux sont gérés par le biais de wp_enqueue_scripts hook, tandis que les scripts dorsaux sont gérés par le biais de admin_enqueue_scripts hook.

Donc, avec cela à l'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');   
}

EDIT 1

Cela a été entièrement testé sur Wordpress version 4.0 et fonctionne comme prévu.

EDIT 2

Comme preuve de concept, collez le code suivant dans votre functions.php. Ceci imprimera un message de réussite ou d’échec dans l’en-tête de votre site, du back-end et du 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';
    }
}
21
Pieter Goosen

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 qui est nécessaire au bon fonctionnement de certains plug-ins.

Cela pourrait être agaçant, 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 est d'ouvrir le fichier header.php dans le répertoire de votre thème et d'ajouter:

<?php wp_deregister_script('jquery'); ?>

juste avant 

<?php wp_head(); ?>

Ou tout simplement les combiner dans:

<?php wp_deregister_script('jquery'); wp_head(); ?>

Une explication plus technique pourrait être trouvée ici

4
Adam Tal

Regardez dans vos fichiers de thème. 

wp-content/themes/header.php

peut inclure les fichiers .js.

3
Ahmet Kakıcı

Regardez dans la source de votre page rendue; Wordpress inclut souvent jQuery par défaut lorsque <?php wp_head(); ?> est appelé dans header.php, vous pouvez donc toujours voir jQuery inclus dans votre site.

Si vous supprimez <?php wp_head(); ?> dans header.php, vous risquez de perdre d'autres fonctionnalités de plug-in, car de nombreux plug-ins "s'accrochent" à Wordpress à ce stade.

Mais inclure jQuery n’est pas un si gros problème. C'est petit et Wordpress en dépend pour certaines choses.

2
markratledge

jQuery.js ne représente que 15 Ko si vous utilisez la version abrégée, et celles-ci seraient totalement absentes si vous utilisiez un thème qui n'en nécessite pas.

Vous devriez probablement rechercher un thème léger sans jQuery au lieu de le pirater puis de le voir se briser à plusieurs endroits car ils recherchent ces fichiers js.

2
Jon Limjap
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 ajoutés par vos plugins installés)

Testé sur 4.3.1

1
user25

J'ai réussi à réduire de 2,2 secondes la vitesse de chargement de ma page "Événements" en annulant l'enregistrement de jQuery. jQuery est un plaisir d'avoir, mais à mon avis, la vitesse de la page est tellement plus importante. 

Vous ne laisserez jamais un utilisateur traîner plus de 5 secondes. Par conséquent, si jQuery vous pose des problèmes de performances, je vous prie de vous en débarrasser.

0
Heath