Seit dem letzten größeren Update von WordPress auf Version 5.5 gibt es häufiger Probleme damit, dass sich bestimmte Elemente oder Inhalte im Administrationsbereich und auch im Frontend nicht mehr anklicken lassen. Das liegt daran, dass jQuery innerhalb von WordPress aktualisiert wurde und bspw. die API jQuery.live()
nicht mehr verfügbar ist. Viele Plugins und Themes verwenden noch das veraltete jQuery.live()
anstelle von jQuery.on()
.
jQuery.live() ersetzen
Damit alles wieder wie gewohnt funktioniert, muss man entweder jedes jQuery.live()
mit einem jQuery.on()
ersetzen, oder aber man nutzt dieses nützliche Schnipsel:
(function($) {
$.fn.extend({
live: function( types, data, fn ) {
if( window.console && console.warn ) {
// Optional, um die Fehler in der Konsole zu zeigen
// console.warn( "$.live() ist veraltet. Verwende stattdessen $.on()." );
}
$( this.context ).on( types, this.selector, data, fn );
return this;
}
});
})(jQuery);
Code-Sprache: JavaScript (javascript)
Falls du dir lieber ein kleines WordPress Plugin installieren möchtest, welches das Schnipsel überall automatisch einbindet:
<?php
/*
Plugin Name: jQuery Fehlerbehebung
Description: Ermöglicht die Verwendung von jQuery.live() auch nachdem die Verwendung veraltet ist.
Version: 1.0.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
add_action( 'plugins_loaded', function() {
add_action( 'admin_head', 'fix_live_events' );
add_action( 'wp_head', 'fix_live_events' );
});
/**
* Ermöglicht die Verwendung von .live().
*
* @return void
*/
function fix_live_events() {
?>
<script>
(function($) {
$.fn.extend({
live: function( types, data, fn ) {
if( window.console && console.warn ) {
// Optional, um die Fehler in der Konsole zu zeigen
// console.warn( "$.live() ist veraltet. Verwende stattdessen $.on()." );
}
$( this.context ).on( types, this.selector, data, fn );
return this;
}
});
})(jQuery);
</script>
<?php
}
Code-Sprache: HTML, XML (xml)
Es gibt sicherlich noch mehr Baustellen durch die Erhöhung der JQuery-Version. Die meisten dieser Baustellen, sollten aber mit dem Schnipsel behoben sein.
Du kannst die .php
-Datei auch in den Ordner /wp-content/mu-plugins/
platzieren. Dann muss das Plugin nicht erst aktiviert und kann auch nicht deaktiviert werden. Sollte der Ordner nicht existieren, kannst du ihn einfach erstellen. WordPress lädt die Plugins in diesem Ordner automatisch immer mit.