众所周知,我们在WordPress的后台,外观–菜单 新建菜单在前端使用wp_nav_menu就可以动态调用.然而小弟今天在使用的时候却怎嘛也调用不出来.这是截图
这是代码: <div id="view_navigator_5_277627331" class="yibuSmartViewMargin absPos" > <div class='yibuFrameContent navigator_Style6_Item0 view_navigator_5_277627331_Style6_Item0'><!--nav--> <ul id=nav_view_navigator_5_277627331 styleItem=Style6> <li class=w_nav_item style=width:20%;*width:19.6%> <h3> <a href="<?php echo get_option('home'); ?>" target=_self> <?php if(function_exists('wp_nav_menu')) { wp_nav_menu(array( 'theme_location' => 'primary','menu_class'=>'nav_view_navigator_5_277627331' ) ); } ?> </a> </h3> </li> </ul> <!--/nav--> </div> </div>
小编遇到的问题是不能保持css样式,而且仅出来两个单页面的菜单,无法全部输出,问题究竟出在那里呢?在网上查了好久,最终找到问题的根源所在.
问题结果:
经过一上午折腾和测试,正确的写法应该是这样的:代码如下:
<div id="view_navigator_5_277627331" class="yibuSmartViewMargin absPos" > <div class='yibuFrameContent navigator_Style6_Item0 view_navigator_5_277627331_Style6_Item0'><!--nav--> <ul id=nav_view_navigator_5_277627331 styleItem=Style6> <?php if(function_exists('wp_nav_menu')) { wp_nav_menu(array( 'theme_location' => 'top-menu','menu_id'=>'nav_view_navigator_5_277627331', 'link_before' => '<li class="w_nav_item" style=width:20%;*width:19.6%><h3>', 'link_after' => '</h3></li>', ) ); } ?> </ul> <!--/nav--> </div> </div> 以下是代码截图:这里要特别注意的是:wp_nav_menu函数中theme_location的值,刚开始小编是从自带模板中拷贝过来的,默认是primary,所以怎嘛在后台修改菜单名称,怎嘛调用都会出问题. 最后在functions.php中找到注册菜单的函数才明白问题出在那里.原来我调用的菜单名称在functions中已经被写死了,
register_nav_menus(array( 'left-menu' => '左边栏菜单', 'top-menu' => '顶部菜单', ));这里left-menu和top-menu分别对应后台的显示位置中的 左边栏菜单,顶部菜单.所以在后台必须把你的菜单在此处打上对号,让后在模板中用theme_location' => 'top-menu',这样调用 就会出现想要的结果.同时需要熟悉wp_nav_menu方法的一些变量值,使用link_before和link_after为链接添上css的样式.后台设置如图:
好了,这样就可以实现在模板中调用自定义菜单了.纪录一下我折腾的过程,也希望能帮助到你!