WordPress现在已经支持自定义菜单了,这样我们就能自己定义我们的导航栏了,但是最近我发现,如果Wordpress主题不支持自定义菜单功能,那么我们还是无法通过菜单功能把文章分类或页面放到导航上去。通过百度搜索终于找到了答案,分享如下:
这个方法是针对inove主题的,其他主题通过这种方法应该也能解决。
首先,我们了解一下wordpress的wp_nav_menu()函数:

 
<?php wp_nav_menu(
array(
‘theme_location’ => ” //指定显示的导航名,如果没有设置,则显示第一个
‘menu’ => ‘header-menu’,
‘container’ => ‘nav’, //最外层容器标签名
‘container_class’ => ‘primary’, //最外层容器class名
‘container_id’ => ”,//最外层容器id值
‘menu_class’ => ‘sf-menu’, //ul标签class
‘menu_id’ => ‘topnav’,//ul标签id
‘echo’ => true,//是否打印,默认是true,如果想将导航的代码作为赋值使用,可设置为false
‘fallback_cb’ => ‘wp_page_menu’,//备用的导航菜单函数,用于没有在后台设置导航时调用
‘before’ => ”,//显示在导航a标签之前
‘after’ => ”,//显示在导航a标签之后
‘link_before’ => ”,//显示在导航链接名之后
‘link_after’ => ”,//显示在导航链接名之前
‘items_wrap’ => ‘<ul id=”%1$s”>%3$s</ul>’,
‘depth’ => 0,////显示的菜单层数,默认0,0是显示所有层
‘walker’ => ”// //调用一个对象定义显示导航菜单 ));
?>

为了能够使后台支持自定义菜单,我们需要在主题下functions.php下 加入register_nav_menus():

 
//自定义菜单
if(function_exists(‘register_nav_menus’)){
register_nav_menus(
array(
‘header-menu’ => __( ‘导航自定义菜单’ ),
// 还可以在这里添加一些菜单 显示在其他位置
//footer-menu=>__( ‘页面底部自定义菜单’ ),
)
);
}

在添加之后,你就会发现inove主题支持一个菜单了。
然后在inove主题后台编辑里找到header.php,我是这样添加的:


 <?php
wp_nav_menu(array(
‘theme_location’=>’header-menu’,//填写需要显示的菜单 这是是header的菜单
//还可以做其他设置这里选择默认
));
?>

去除inove主题自带的菜单:
只要将


<?php
if($options['menu_type'] == ‘categories’) {
wp_list_categories(‘title_li=0&orderby=name&show_count=0′);
} else {
wp_list_pages(‘title_li=0&sort_column=menu_order’);
}

好了大功告成,当然还可以添加一些样式,二级菜单也可以使用css控制一下!
注:添加之后我在修改栏目的时候出现 “Warning: Cannot modify header information – headers already ….”的错误的(没有错误的可以忽略)
register_nav_menus方法添加在functions.php末尾了,我将它放在类iNoveOptions结束的下面就好了!

由 floryu 发布

喜欢折腾,喜欢分享,喜欢WordPress,提供WordPress主题、插件汉化,以及WordPress、DEDECMS建站。

发表评论