it-swarm.com.de

So steuern Sie mit wp_enqueue_script, welche jQuery-Version eingeschlossen werden soll

Ich verwende ein Skript, das auf jQuery basiert, sodass ich jQuery nicht direkt in die Warteschlange einreihe, sondern über die Übergabe in das Array abhängiger Skripte:

 wp_enqueue_script("jquery-plugin-name",'http://hostname.il/blogname/wp-content/themes/twentyten/js/jquery-plugin-name.js', array('jquery'), '1');

Dies lädt jQuery v1.4.4 und wiegt 76 KB, was sehr schwer zu sein scheint, obwohl die Datei komprimiert aussieht.

Ich habe 2 Fragen:

  1. Kann ich die neueste Version von jQuery laden?
  2. Wie kann ich sicherstellen, dass die geladene Datei minimiert ist?
3
Lea Cohen

Das ist die Größe der minimierten jQuery heutzutage :)

Sie können das Neueste von Google laden:

wp_deregister_script('jquery');
wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"), false, '1.8.2');

Beachten Sie bitte, dass dies zu Problemen führen kann, da Sie WordPress zwingen, eine bestimmte Version von jQuery anstelle der mitgelieferten Version zu laden. Es gibt Plugins wie WP JQuery Plus , die möglicherweise besser für Ihre Anforderungen geeignet sind. Sie stellen sicher, dass Sie dieselbe Versionsnummer laden wie WordPress, jedoch mit dem Vorteil, dass Sie diese von laden Google.

1
onetrickpony

Ändere nicht die Version von jQuery, die von WordPress in die Warteschlange gestellt wurde.

Tu es einfach nicht. Der Kern hängt von einer bestimmten Version ab. Themes und Plugins hängen von einer bestimmten Version ab. Diese bestimmte Version ist die Version, die mit einer bestimmten Version von WordPress gebündelt ist.

Wenn Sie eine Skriptminimierung, -komprimierung oder -verkettung durchführen müssen, können Sie dies auf jeden Fall tun (Sie können Ihr eigenes Roll-In erstellen oder ein Plug-In wie W3 Total Cache verwenden, um dies für Sie zu tun.)

Aber wie Sie sehen: Wenn Sie eine 46-KB-Datei haben, haben Sie es bereits mit einer Kombination aus Minimierung und Komprimierung zu tun .

2
Chip Bennett

Ich habe ein Plugin für dieses spezielle Problem entwickelt. Dieses Plugin ist nicht mit WordPress jQuery verwirrend, da es nur im Frontend geladen wird. Siehe: jQuery Manager für WordPress

Warum noch ein jQuery Updater/Manager/Developer/Debugging-Tool?

Da Sie mit keinem der Entwicklertools eine bestimmte Version von jQuery und/oder jQuery Migrate auswählen können. Bereitstellung sowohl der Produktions- als auch der verkleinerten Version. Siehe Funktionen unten!

✅ Nur im Front-End ausgeführt, beeinträchtigt WordPress-Administrator/Backend und WP Customizer nicht (aus Kompatibilitätsgründen) Siehe: https: //core.trac. wordpress.org/ticket/45130 und https://core.trac.wordpress.org/ticket/37110

Ein-/Ausschalten jQuery und/oder jQuery Migrate

✅ Aktivieren Sie eine spezifische Version von jQuery und/oder jQuery Migrate

Und vieles mehr! Der Code ist Open Source, sodass Sie ihn studieren, daraus lernen und Beiträge leisten können.


Fast jeder benutzt den falschen Griff

WordPress verwendet tatsächlich das JQuery-Core-Handle, nicht JQuery:

https://github.com/WordPress/WordPress/blob/91da29d9afaa664eb84e1261ebb916b18a362aa9/wp-includes/script-loader.php#L226

// jQuery
$scripts->add( 'jquery', false, array( 'jquery-core', 'jquery-migrate' ), '1.12.4' );
$scripts->add( 'jquery-core', '/wp-includes/js/jquery/jquery.js', array(), '1.12.4' );
$scripts->add( 'jquery-migrate', "/wp-includes/js/jquery/jquery-migrate$suffix.js", array(), '1.4.1' );

Das jquery Handle ist nur ein Alias ​​zum Laden von jquery-core mit jquery-migrate

Weitere Informationen zu Aliasen: wp_register_script Mehrere Bezeichner?

Der richtige Weg, es zu tun

In meinem Beispiel unten verwende ich das offizielle jQuery-CDN unter https://code.jquery.com . Ich verwende auch script_loader_tag , damit ich einige CDN-Attribute hinzufügen kann.
Sie können den folgenden Code verwenden:

// Front-end not excuted in the wp admin and the wp customizer (for compatibility reasons)
// See: https://core.trac.wordpress.org/ticket/45130 and https://core.trac.wordpress.org/ticket/37110
function wp_jquery_manager_plugin_front_end_scripts() {
    $wp_admin = is_admin();
    $wp_customizer = is_customize_preview();

    // jQuery
    if ( $wp_admin || $wp_customizer ) {
        // echo 'We are in the WP Admin or in the WP Customizer';
        return;
    }
    else {
        // Deregister WP core jQuery, see https://github.com/Remzi1993/wp-jquery-manager/issues/2 and https://github.com/WordPress/WordPress/blob/91da29d9afaa664eb84e1261ebb916b18a362aa9/wp-includes/script-loader.php#L226
        wp_deregister_script( 'jquery' ); // the jquery handle is just an alias to load jquery-core with jquery-migrate
        // Deregister WP jQuery
        wp_deregister_script( 'jquery-core' );
        // Deregister WP jQuery Migrate
        wp_deregister_script( 'jquery-migrate' );

        // Register jQuery in the head
        wp_register_script( 'jquery-core', 'https://code.jquery.com/jquery-3.3.1.min.js', array(), null, false );

        /**
         * Register jquery using jquery-core as a dependency, so other scripts could use the jquery handle
         * see https://wordpress.stackexchange.com/questions/283828/wp-register-script-multiple-identifiers
         * We first register the script and afther that we enqueue it, see why:
         * https://wordpress.stackexchange.com/questions/82490/when-should-i-use-wp-register-script-with-wp-enqueue-script-vs-just-wp-enque
         * https://stackoverflow.com/questions/39653993/what-is-diffrence-between-wp-enqueue-script-and-wp-register-script
         */
        wp_register_script( 'jquery', false, array( 'jquery-core' ), null, false );
        wp_enqueue_script( 'jquery' );
    }
}
add_action( 'wp_enqueue_scripts', 'wp_jquery_manager_plugin_front_end_scripts' );


function add_jquery_attributes( $tag, $handle ) {
    if ( 'jquery-core' === $handle ) {
        return str_replace( "type='text/javascript'", "type='text/javascript' integrity='sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=' crossorigin='anonymous'", $tag );
    }
    return $tag;
}
add_filter( 'script_loader_tag', 'add_jquery_attributes', 10, 2 );
2
Remzi Cavdar