我如何才能使此自定义菜单起作用?

时间:2011-09-26 作者:Kelbizzle

有人能和我分享一下将其转换为wordpress 3.0内置菜单支持的最简单方法吗。到目前为止,我的topnav菜单工作正常,但我很难让subnav显示出来。如何使此代码与默认安装的wordpress一起工作?我假设在添加<?php wp_nav_menu( array( \'sort_column\' => \'menu_order\', \'depth\' => 0,\'menu_class\' => \'topnav\', \'theme_location\' => \'primary-menu\' ) ); ?>

将js和css中的subnav更改为sub菜单。一切都会好起来的。我做错了什么?

我使用的是jquery 1.6.1这是来自静态html页面的原始代码。JS公司

$(document).ready(function(){  

    $("ul.subnav").parent().append("<span></span>"); //Only shows drop down trigger when js is enabled (Adds empty span tag after ul.subnav*)  

    $("ul.topnav li span").click(function() { //When trigger is clicked...  

        //Following events are applied to the subnav itself (moving subnav up and down)  
        $(this).parent().find("ul.subnav").slideDown(\'fast\').show(); //Drop down the subnav on click  

        $(this).parent().hover(function() {  
        }, function(){  
            $(this).parent().find("ul.subnav").slideUp(\'slow\'); //When the mouse hovers out of the subnav, move it back up  
        });  

        //Following events are applied to the trigger (Hover events for the trigger)  
        }).hover(function() {  
            $(this).addClass("subhover"); //On hover over, add class "subhover"  
        }, function(){  //On Hover Out  
            $(this).removeClass("subhover"); //On hover out, remove class "subhover"  
    });  

});  
CSS

ul.topnav {  
  list-style: none;  
  padding: 0px 0px;  
  margin: -12px -11px 0;  
  float: left;  
  width: 922px;  
  background: #222;  
  font-size: 1.2em;  
  background: url(../images/topnav_bg.gif) repeat-x;  

}  
ul.topnav li {  
    float: left;  
    margin: 0;  
    padding: 0 15px 0px 5px;  
    position: relative; /*--Declare X and Y axis base for sub navigation--*/  
}  
ul.topnav li a{  
    padding: 10px 0px 5px 10px;  
    color: #fff;  
    display: block;  
    text-decoration: none;  
    float: left;  
}  
ul.topnav li a:hover{  
    background: url(../images/topnav_hover.gif) no-repeat center top;  
}  
ul.topnav li span { /*--Drop down trigger styles--*/  
    width: 17px;  
    height: 35px;  
    float: left;  
    background: url(../images/subnav_btn1.gif) no-repeat center top;  
}  
ul.topnav li span.subhover {background-position: center bottombottom; cursor: pointer;} /*--Hover effect for trigger--*/  
ul.topnav li ul.subnav {  
    list-style: none;  
    position: absolute; /*--Important - Keeps subnav from affecting main navigation flow--*/  
    left: 0; top: 35px;  
    background: #333;  
    margin: 0; padding: 0;  
    display: none;  
    float: left;  
    width: 195px;  
    border: 1px solid #111; 
    z-index:500; 
}  
ul.topnav li ul.subnav li{  
    margin: 0; padding: 0;  
    border-top: 1px solid #252525; /*--Create bevel effect--*/  
    border-bottom: 1px solid #444; /*--Create bevel effect--*/  
    clear: both;  
    width: 195px;  
}  
html ul.topnav li ul.subnav li a {  
    float: left;  
    width: 170px;  
    background: #333 url(../images/dropdown_linkbg.gif) no-repeat 10px center;  
    padding-left: 25px;  
    font-size: 13px;

}  
html ul.topnav li ul.subnav li a:hover { /*--Hover effect for subnav links--*/  
    background: #222 url(../images/dropdown_linkbg.gif) no-repeat 10px center;  
}

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

您需要针对适当的theme_location.

假设您已使用定义了多个导航菜单位置register_nav_menus() 在函数中。php:

<?php
register_nav_menus( array(
    \'primary-menu\' => \'Primary Menu\',
    \'secondary-menu\' => \'Secondary Menu\'
) );
?>
然后你打电话wp_nav_menu() 使用适当的theme_location 如上所述,以及任何其他相关参数,例如:

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

wp_nav_menu( array(
    \'theme_location\' => \'secondary-menu\',
    \'menu_class\' => \'subnav\'
) );
?>
另外,请注意您的一些论点,例如menu_order, 不是的有效参数wp_nav_menu(). Here are the defaults:

<?php $defaults = array(
  \'theme_location\'  => ,
  \'menu\'            => , 
  \'container\'       => \'div\', 
  \'container_class\' => \'menu-{menu slug}-container\', 
  \'container_id\'    => ,
  \'menu_class\'      => \'menu\', 
  \'menu_id\'         => ,
  \'echo\'            => true,
  \'fallback_cb\'     => \'wp_page_menu\',
  \'before\'          => ,
  \'after\'           => ,
  \'link_before\'     => ,
  \'link_after\'      => ,
  \'items_wrap\'      => \'<ul id=\\"%1$s\\" class=\\"%2$s\\">%3$s</ul>\',
  \'depth\'           => 0,
  \'walker\'          => );
?>

结束

相关推荐

WordPress和W3C CSS验证

我已经到处玩WordPress好几年了,我想知道WordPress主题的CSS验证有什么问题。这似乎是个愚蠢的问题,但:有没有一个与WordPress相关的原因,为什么我在WC3 CSS验证中遇到的主题没有出现无错误?我想到了可能发生这种情况的几个原因:那些设计许多主题的人并不关心它是否通过验证,我的主题是从不太好的来源获得的,WordPress有一些怪癖,迫使设计师“破解”他们的CSS,只是好奇而已。