webentwicklung-frage-antwort-db.com.de

So deaktivieren Sie hoverIntent in Wordpress 3.3 admin

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&amp;load=admin-bar,hoverIntent,common,jquery-color,suggest,inline-edit-post,jquery-form&amp;ver=26e0371f31adb44206d9f999828c9182'></script>

3
supertrue

Wo ist Hover Intent mit den Menüs in WordPress Core verbunden?

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.

So entfernen Sie HoverIntent aus der Leiste und dem Menü

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.

Enqueue in admin head setting benötigt Abhängigkeiten

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 die benutzerdefinierte Javascript-Datei

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');
        }
    );
});

Viel Spaß beim schnelleren Navigieren!

Hoffentlich hilft das.. :)

3
t31os