wake-up-neo.net

Menü-Fallback "menu_class" rendert ein "div" anstelle eines "ul"

Ich arbeite an einem Fallback-Menü für ein WordPress-Theme, an dem ich arbeite. Der menu_class des Hauptmenüs gibt eine ul wieder, was ich will.

Wenn ich jedoch den Menü-Fallback verwende, gibt der menu_class stattdessen eine div aus. Gibt es eine Möglichkeit, Wordpress eine ul für das Fallback-Menü anstelle einer div rendern zu lassen?

Hier ist mein Code:

 function clarity_main_nav_fallback() {

     wp_nav_menu(array(

    'show_home' => true,
    'container' => false,                           // remove nav container
    'container_class' => 'menu clearfix',           // class of container (should you choose to use it)
    'menu_class' => 'nav navbar-nav'              // adding custom nav class

    ));

 }
1
Johann

Erstens denke ich, dass Sie die wp_nav_menu() args verwirren. Der Parameter 'menu_class' definiert die Klasse, die dem Menüelement hinzugefügt wird. Standardmäßig ist dies <ul> gemäß dem Parameter 'items_wrap'. Der voreingestellte 'menu_class' ist 'menu', was zu <ul class="menu"> führt.

Das eigentliche Problem ist eigentlich der fallback_cb - der Rückruf, der verwendet wird, wenn kein Menü definiert ist. Der Standardwert ist wp_page_menu() .

Jetzt geben sowohl wp_nav_menu() als auch wp_page_menu() standardmäßig eine ungeordnete Liste (<ul>) aus, die von einem Container (<div>) umschlossen wird. In Ihrem Aufruf von wp_nav_menu() haben Sie: 'container' => false, der die Menüliste überschreibt, die von einem Container <div> umschlossen wird. Dieser Parameter wird jedoch nicht an die Standardausgabe wp_page_menu() callback übergeben.

Die einfachste Lösung wäre,Ihren eigenen Rückruf zu definieren:

wp_nav_menu( array(
    // Add your normal args here
    'fallback_cb' => 'wpse116656_nav_menu_cb'
) );

Dann deklarieren Sie Ihre Rückruffunktion:

function wpse116656_nav_menu_cb() {
    wp_page_menu( array(
        // Args here
    ) );
}

Hier ist die Einschränkung:

  • wp_nav_menu() wendet den Parameter 'menu_class' auf dieungeordnete Liste an

    (<div><ul class="$menu_class"></ul></div>)

  • wp_page_menu() wendet den Parameter 'menu_class' auf denWrapper-Containeraußerhalb der Menüliste an

    (<div class="$menu_class"><ul></ul></div>)

Sie müssen dies also mit Ihrem CSS berücksichtigen.

4
Chip Bennett