Ich habe ein Plugin für dieses spezielle Problem entwickelt. Das Plugin kann nicht mit WordPress jQuery umgehen, 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!
✅ Wird nur im Frontend ausgeführt und 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
✅ Schalten Sie jQuery und / oder jQuery Migrate ein / aus
✅ Aktivieren Sie eine bestimmte 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önnten 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 /wordpress/283828/wp-register-script-multiple-identifiers
* We first register the script and afther that we enqueue it, see why:
* /wordpress/82490/when-should-i-use-wp-register-script-with-wp-enqueue-script-vs-just-wp-enque
* /programming/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 );