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?

28
demandé sur Pieter Goosen 2009-07-21 10:15:59

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.

28
répondu NerdStarGamer 2009-07-21 22:09:20

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' );
    }
}
29
répondu deweydb 2014-05-08 19:38:18

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';
    }
}
20
répondu Pieter Goosen 2014-11-21 18:07:21

Regardez dans vos fichiers de thème.

Wp-contenu / thèmes / en-tête.php

Peut inclure le .fichiers js.

4
répondu Ahmet Kakıcı 2009-07-21 06:21:58

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

4
répondu Adam Tal 2014-11-23 10:36:14

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.

3
répondu Jon Limjap 2009-07-21 06:25:08

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.

3
répondu markratledge 2009-07-21 17:57:00

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.

1
répondu Heath 2012-02-19 23:45:37
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

1
répondu user25 2015-11-02 02:08:33