Ich mag hoverIntent in den neuen Flyout-Menüs oder in der Admin-Leiste nicht. Für mich fühlt sich meine Seite langsam an.
Was wäre die Wordpress-freundliche Möglichkeit, hoverIntent in der neuen Wordpress-Admin- und Symbolleiste zu deaktivieren (oder seine Optionen zu ändern)?
Der einzige Ort, an dem ich hoverIntent in der Quelle der Admin-Seite sehe, ist hier:
<script type='text/javascript' src='http://mysite.com/wp-admin/load-scripts.php?c=1&load=admin-bar,hoverIntent,common,jquery-color,suggest,inline-edit-post,jquery-form&ver=26e0371f31adb44206d9f999828c9182'></script>
In den folgenden 2 Dateien wird hoverIntent als Click-Handler für die Leiste bzw. das Menü angehängt.
Admin Bar
Die Datei admin-bar.js richtet Hover Intent in der oberen Leiste hier in Zeile 13 von admin-bar.js ein.Admin Menu
Die Datei common.js richtet Hover Intent in der Seitenleiste in Zeile 185 von common.js ein.
WordPress fügt die Hoverintent-Handler für die Leiste und das Menü in das Dokument ein. Wenn wir also diese Klick-Handler neu binden möchten, müssen wir sicherstellen, dass dies nach der Ausführung von JS durch WordPress erfolgt.
Der einfachste Weg, um sicherzustellen, dass unser Skript zum richtigen Zeitpunkt geladen wird, besteht darin, eine Warteschlange im Admin-Bereich auszulösen undadmin-barundcommonSkripte als Abhängigkeiten festzulegen.
Hängen Sie einen Rückruf an admin_head
an und lösen Sie eine Warteschlange mit den beiden erforderlichen Abhängigkeiten aus.
add_action( 'admin_head', 'disable_admin_hoverintent' );
function disable_admin_hoverintent() {
wp_enqueue_script(
// Script handle
'disable-admin-hoverintent',
// Script URL
get_bloginfo( 'stylesheet_directory' ).'/disableadminhi.js',
// Script dependancies
array( 'admin-bar', 'common' )
);
}
Erstellen Sie eine Datei im Ordner Ihres Themas und benennen Sie sie so, dass sie mit der Datei in der obigen Warteschlange übereinstimmt. In meinem Beispiel habe ich den Namen disableadminhi.js
verwendet, aber Sie können diesen gerne anpassen und/oder die Warteschlange an eine andere Stelle verschieben, wenn Sie nicht möchten Ich möchte es nicht in den Ordner des Themas legen.
Javascript für disableadminhi.js
jQuery(document).ready(function($){
$('#wpadminbar').find('li.menupop').hover( function(){
$(this).toggleClass('hover');
});
// Bring menu into scope(defined by common.js in wordpress)
var menu;
// Copy of the function from common.js, just without hoverIntent
$('li.wp-has-submenu', menu).hover(
function(e){
var b, h, o, f, m = $(this).find('.wp-submenu'), menutop, wintop, maxtop;
if ( !$(document.body).hasClass('folded') && $(this).hasClass('wp-menu-open') )
return;
menutop = $(this).offset().top;
wintop = $(window).scrollTop();
maxtop = menutop - wintop - 30; // max = make the top of the sub almost touch admin bar
b = menutop + m.height() + 1; // Bottom offset of the menu
h = $('#wpwrap').height(); // Height of the entire page
o = 60 + b - h;
f = $(window).height() + wintop - 15; // The fold
if ( f < (b - o) )
o = b - f;
if ( o > maxtop )
o = maxtop;
if ( o > 1 )
m.css({'marginTop':'-'+o+'px'});
else if ( m.css('marginTop') )
m.css({'marginTop':''});
m.addClass('sub-open');
},
function(){
$(this).find('.wp-submenu').removeClass('sub-open');
}
);
});
Hoffentlich hilft das.. :)