指定菜单的类样式

时间:2012-11-20 作者:Kirsty Marks

Im将Superfish集成到WP中。我已经调用了CSS和JS。但是,当我在wp_menu 如下所示,菜单正在消失(see here for rendered output). 有人能帮忙吗(这已经被跟踪了from a not so helpful tutorial)

当前生成的代码是:

<div class="menudiv">
<div class="sf-menu"><ul><li class="page_item page-item-2 current_page_item"><a href="http://rusticblonde.hostizzo.com/">Home</a></li>
<li class="page_item page-item-101">    <a href="http://rusticblonde.hostizzo.com/?page_id=101">test 1</a></li>
<li class="page_item page-item-105"><a href="http://rusticblonde.hostizzo.com/?page_id=105">test 2</a></li>
<li class="page_item page-item-103"><a href="http://rusticblonde.hostizzo.com/?page_id=103">test 3</a></li>
<li class="page_item page-item-98"><a href="http://rusticblonde.hostizzo.com/?page_id=98">Test Page</a></li></ul></div>
</div>
我的标题中有以下内容:-

<?php
wp_nav_menu( array(
\'theme_location\' => \'primary\',
\'container_class\' => \'menudiv\',
\'menu_class\' => \'sf-menu\'
) );
?>

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

查看渲染输出:

<div class="menu sf-menu"><ul><li class="page_item page-item-2 current_page_item">...
看来\'sf-menu\' 作为类附加到菜单容器,而不是菜单本身。

这个wp_nav_menu() 函数有两个单独的参数:

  • menu_class: 应用于菜单列表的CSS类<ul> 菜单标签container_class: 应用于包含菜单的元素标记的CSS类(默认为<div>)

    wp_nav_menu( array(
        \'theme_location\' => \'primary\',
        \'container_class\' => \'menu-container-class\',
        \'menu_class\' => \'menu-ul-class\'
    ) );
    
    渲染输出应如下所示:

    <div class="menu menu-container-class"><ul class="menu-ul-class"><li class="page_item page-item-2 current_page_item">...
    
    因此,您使用的container_class 而不是menu_class 在您的wp_nav_menu() 呼叫

    编辑替换此:

    <div class="menudiv">
    <?php wp_nav_menu( array( \'theme_location\' => \'primary\', \'menudiv\' => \'menu sf-menu\' ) ); ?> 
    </div>
    
    。。。使用此选项:

    <?php
    wp_nav_menu( array(
        \'theme_location\' => \'primary\',
        \'container_class\' => \'menudiv\',
        \'menu_class\' => \'sf-menu\'
    ) );
    ?>
    
    编辑2好的,我想我知道发生了什么:您没有为\'primary\' 模板位置,这意味着默认的回退菜单(wp_page_menu()) 正在输出。当这种情况发生时,\'menu_class\' 分配给<div> 包含wp_page_menu() 输出,而不是到<ul>.

    由于菜单中生成的CSS类,您可以知道默认菜单回调正在输出:

    li class="page_item page-item-2 current_page_item"
    
    如果这是此位置中的实际自定义菜单,则这些类将包括\'menu-item\', 而不是\'page_item\'. 作为参考,请比较CSS classes output by wp_nav_menu() 使用CSS classes output by wp_page_menu().

    根据我们的聊天对话,问题是您正在注册主题位置main 在里面register_nav_menus(), 但试图调用主题位置primary 在里面wp_nav_menu(). 轻松修复、更改\'theme_location\' => \'primary\'\'theme_location\' => \'main\' 在里面wp_nav_menu():

    <?php
    wp_nav_menu( array(
        \'theme_location\' => \'main\',
        \'container_class\' => \'menudiv\',
        \'menu_class\' => \'sf-menu\'
    ) );
    ?>
    

SO网友:s_ha_dum

删除尾部逗号。我很确定我已经看到在某些情况下会产生错误。此外,这里更整洁。

当您插入menu_class 覆盖默认值。我敢肯定,你只是看到了后果。添加“sf menu”和“menu”,或主题所需的任何类。

<?php wp_nav_menu( array( \'theme_location\' => \'primary\', \'menu_class\' => \'menu sf-menu\' ) ); ?> 

结束

相关推荐

如何根据用户角色级别定位css、admin元素?

我正在使用插件“增强的功能管理器”和“Adminimize”。在这两者之间,我已经能够做很多我想做的事情。我仍然需要隐藏一些元素,并且能够使用css将它们作为目标。问题是这些元素在所有管理用户级别都是隐藏的。是否有某种内置功能可以区分管理中的不同角色级别?我认为最好的方法是根据登录时的角色级别向body标记中添加一个类——例如,如果登录角色级别为“author”,则为“author”类。如果这是最好的方法,我就不知道如何编写代码来实现这一点。我假设它是对函数的php添加。php???