web-dev-qa-db-ger.com

Wie kann ich jquery von der Vorderseite meines WordPress entfernen?

Meine WordPress-Seite ist etwas schwer herunterzuladen. Auf dem Frontend ist es unnötig, JQuery einzuschließen. In meinem Feuerkäfer sieht es so aus:

jquery.js?ver=1.3.2

und

jquery.form.js?ver=2.02m

Ich brauche diese nicht, um sie für mich aufzunehmen.

Ich freue mich, dass sie im wp-admin bleiben, aber ich möchte, dass sie nicht im Frontend geladen werden.

Ich habe die Datei gefunden, von der ich denke, dass sie in wp-includes/script-loader.php geladen wird, aber ich bin nicht sicher, was ich auskommentieren oder was ich tun soll, um sie für die Vorderseite vollständig zu entfernen.

Gibt es eine Möglichkeit, jquery zu entfernen, ohne das Backend zu ruinieren?

29
willdanceforfun

JQuery wird möglicherweise von Ihrem Design hinzugefügt. Wenn Ihr Theme es richtig hinzufügt, sollte es die Funktion wp_enqueue_script() verwenden. Um JQuery zu entfernen, verwenden Sie einfach die Funktion wp_deregister_script().

wp_deregister_script('jquery');

Das Entfernen von JQuery für Ihre gesamte Website kann zu unbeabsichtigten Konsequenzen für Ihren Verwaltungsbereich führen. Verwenden Sie stattdessen diesen Code, um das Entfernen von JQuery auf Ihren Verwaltungsseiten zu vermeiden:

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

Jetzt führen nur Seiten, die keine Administratorseiten sind, die Funktion wp_deregister_script() aus. 

Fügen Sie diesen Code der Datei functions.php in Ihrem Designverzeichnis hinzu.

30
NerdStarGamer

Alle anderen Lösungen sind ab WordPress 3.6 veraltet

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

Die korrekte Methode zum vollständigen Entfernen eines Stils oder Skripts besteht darin, ihn zu entschlüsseln und . Beachten Sie auch, dass Front-End-Skripts über den wp_enqueue_scripts -Hook verarbeitet werden, während Back-End-Skripts über den admin_enqueue_scripts -Hook verarbeitet werden.

In diesem Sinne können Sie also Folgendes tun

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

Dies wurde vollständig auf Wordpress Version 4.0 getestet und funktioniert wie erwartet.

EDIT 2

Fügen Sie als Proof of Concept den folgenden Code in Ihre functions.php ein. Dadurch wird eine Erfolgs- oder Fehlermeldung in den Kopf Ihrer Site, im Backend und im Frontend gedruckt

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 fügt diesen jQuery-Aufruf über ein Vorlagen-Tag mit dem Namen <?php wp_head(); ?> hinzu, das in den meisten Designs angezeigt wird und für einige Plugins erforderlich ist.

Das kann ärgerlich sein, nicht nur wegen des Ladens, sondern auch, weil das zuvor geladene jQuery-Programm beendet werden könnte. Einige Plugins, die versuchen, jQuery ebenfalls zu laden, können sogar im Weg stehen.

Die Schnellkorrektur öffnet die Datei header.php im Verzeichnis Ihres Themes und fügt hinzu:

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

kurz bevor 

<?php wp_head(); ?>

Oder kombinieren Sie beide einfach zu:

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

Eine technischere Erklärung finden Sie hier

4
Adam Tal

Schauen Sie sich Ihre Designdateien an. 

wp-content/themes/header.php

kann die .js-Dateien enthalten.

3
Ahmet Kakıcı

Schauen Sie in die Quelle Ihrer gerenderten Seite. Wordpress enthält häufig jQuery standardmäßig, wenn <?php wp_head(); ?> in der header.php aufgerufen wird. Daher wird möglicherweise jQuery in Ihrer Site angezeigt.

Wenn Sie <?php wp_head(); ?> in der header.php entfernen, gehen möglicherweise andere Plugin-Funktionen verloren, da sich an dieser Stelle viele Plugins in Wordpress "einhaken".

Aber jQuery einzubeziehen, ist kein so großer Deal. Es ist klein und Wordpress ist für einige Dinge davon abhängig.

2
markratledge

jQuery.js ist nur 15 KB, wenn Sie die reduzierte Version verwenden, und diese fehlen vollständig, wenn Sie ein Design verwenden, das dies nicht erfordert.

Sie sollten wahrscheinlich nach einem einfachen Thema ohne jQuery suchen, anstatt es zu hacken und dann das Thema an mehreren Stellen aufzubrechen, da diese nach js-Dateien suchen.

2
Jon Limjap
function my_init() {
    if (!is_admin()) {
        wp_deregister_script('jquery');
        wp_register_script('jquery', false);
    }
}
add_action('init', 'my_init');

Es ist richtig - entfernt die Jquery-Library-Js. Code aus anderen Antworten entfernt alle Js (sogar Js, die von Ihren installierten Plugins hinzugefügt werden)

Getestet am 4.3.1

1
user25

Ich konnte die Ladegeschwindigkeit für "Ereignisse" um 2,2 Sekunden verkürzen, indem ich jQuery abmeldete. jQuery ist ein nettes zu haben, aber meiner Meinung nach ist die Seitengeschwindigkeit so viel wichtiger. 

Sie werden nie einen Benutzer länger als 5 Sekunden herumhängen müssen. Wenn Sie also mit jQuery Leistungsprobleme haben, sage ich "Loslassen".

0
Heath

WordPress 5 und höher (Getestet)

Entfernen Sie die Standard-JQuery und fügen Sie Ihre JQuery aus dem Ordner oder von CDN hinzu. Verwende nur einen, 'local' oder 'cdn'

// Remove the WordPress default jquery
wp_deregister_script( 'jquery' );

// using a local file
wp_enqueue_script(
  'jquery', get_template_directory_uri() . '/lib/jquery-3.3.1.min.js','', '3.3.1', true
);

// using CDN
wp_enqueue_script(
    'jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js', '', '3.3.1', true
);

// $handle: 'jquery'
// $src: 
    // local: get_template_directory_uri() . '/lib/jquery-3.3.1.min.js'
    // cdn: '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'
// $deps: '' (leave it empty)
// $ver: '3.3.1'
// $in_footer: true (boolean)

Syntax

wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
0
TheHive