菜单后备选项“Menu_Class”呈现“div”而不是“ul”

时间:2013-10-03 作者:Johann

我正在为我正在处理的WordPress主题创建一个后备菜单。主菜单的menu_class 渲染ul 这就是我想要的。

但是,如果使用菜单回退,则menu_class 渲染div 相反有没有办法让Wordpress呈现ul 用于备用菜单,而不是div?

这是我的代码:

 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

    ));

 }

2 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

首先,我想你把wp_nav_menu() args。这个\'menu_class\' 参数定义添加到菜单元素的类,默认情况下为<ul>, 根据\'items_wrap\' 参数默认值\'menu_class\'\'menu\', 这导致<ul class="menu">.

真正的问题实际上是fallback_cb - 未定义菜单时使用的回调-默认为wp_page_menu().

现在,两个wp_nav_menu()wp_page_menu() 输出无序列表(<ul>) 用容器包装(<div>) 默认情况下。在您的呼叫中wp_nav_menu(), 您有:\'container\' => false, 覆盖由容器包装的菜单列表<div>. 但该参数不会传递给默认值wp_page_menu() 回调输出。

最简单的解决方案是定义自己的回调:

wp_nav_menu( array(
    // Add your normal args here
    \'fallback_cb\' => \'wpse116656_nav_menu_cb\'
) );
然后声明回调函数:

function wpse116656_nav_menu_cb() {
    wp_page_menu( array(
        // Args here
    ) );
}
现在,请注意:

  • wp_nav_menu() 应用\'menu_class\' 无序列表的参数

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

  • wp_page_menu() 应用\'menu_class\' 菜单列表外部包装容器的参数

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

    因此,您需要用CSS来说明这一点。

SO网友:ketan chaudhari

菜单位置有问题

转到

仪表板>>外观>>菜单>>“打开菜单名称”

    => Find at " Display Location " in  " Menu Setting"

    => check " primary menu " [ if you have uncheck]
<小时>

enter image description here

结束

相关推荐

private functions in plugins

我开发了两个插件,其中一个功能相同(相同的名称,相同的功能)。当试图激活两个插件时,Wordpress会抛出一个错误,因为它不允许我以相同的名称定义函数两次。有没有一种方法可以使这个函数只对插件私有,而不使用面向对象编程,也不简单地重命名函数?我不想使用OOP,因为我首先要学习它。此外,我不想重命名该函数,因为我可能也想在其他插件中使用它,而重命名感觉不太合适。