web-dev-qa-db-fra.com

Comment désactiver hoverIntent dans Wordpress 3.3 admin

Je n'aime pas hoverIntent dans les nouveaux menus déroulants ou la barre d'administration; pour moi, ma page est lente.

Quel serait le moyen convivial de désactiver hoverIntent (ou de modifier ses options) dans le nouvel administrateur et la nouvelle barre d’outils Wordpress?

Le seul endroit où je vois hoverIntent dans la source de la page d'administration est ici:

<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

Où Hover Intent est-il associé aux menus de WordPress?

Les 2 fichiers suivants concernent l’association de hoverIntent en tant que gestionnaires de clic pour la barre et le menu, respectivement.

Barre d'administration
Le fichier admin-bar.js définit l’intention de survol sur la barre supérieure de la ligne 13 de admin-bar.js .

Menu Admin
Le fichier common.js définit Hover Intent dans le menu de la barre latérale à la ligne 185 de common.js .

Comment supprimer HoverIntent de la barre et du menu

WordPress attache les gestionnaires hoverintent pour la barre et le menu prêts pour le document. Par conséquent, si nous voulons rapprocher ces gestionnaires de clics, nous devons nous assurer de le faire après que WordPress l'aura terminé, c'est JS Business.

Le moyen le plus simple d’assurer le chargement de notre script au bon moment consiste à déclencher une file d’attente dans l’administrateur et à définir admin-bar et common scripts en tant que dépendances.

Mise en file d'attente dans la définition de la tête d'admin

Associez un rappel à admin_head et déclenchez une mise en file d'attente avec les deux dépendances requises.

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

Créer le fichier Javascript personnalisé

Créez un fichier dans le dossier de votre thème et nommez-le pour correspondre au fichier dans la file d'attente ci-dessus. Dans mon exemple, j'ai utilisé le nom disableadminhi.js, mais vous pouvez l'ajuster et/ou recoller la file d'attente ailleurs ne voulez pas le placer dans le dossier du thème.

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

Profitez d'une navigation plus rapide!

J'espère que cela pourra aider.. :)

3
t31os