一聚教程网:一个值得你收藏的教程网站

热门教程

WordPress输出Bootstrap导航栏结构的菜单例子

时间:2022-06-25 18:42:27 编辑:袖梨 来源:一聚教程网

最近tennfy在用Bootstrap重写博客主题,由于之前没有用过Bootstrap,所以也是花了不少功夫来了解Bootstrap。Bootstrap提供了很完整的css样式布局,对于有一定前端基础的人来说真的非常方便。

利用Bootstrap做wordpress主题遇到的第一个问题就是输出Bootstrap导航栏结构的菜单,这样才能够利用Bootstrap提供的样式进行菜单的显示。本文就来介绍下如何实现wordpress输出Bootstrap的菜单结构。

Bootstrap导航栏结构

常见的Bootstrap导航栏为如下形式:

defaultnavbar_demo

其HTML结构为:


自定义wp_nav_menu函数

熟悉wordpress的朋友都知道,wordpress一般采用wp_nav_menu函数输出菜单,而通过该函数输出的菜单是得不到上述的html结构的。不过值得高兴的是,wp_nav_menu函数支持自定义输出html结构。

wordpress中wp_nav_menu函数的参数如下所示:


 
$defaults = array(  
    'theme_location'  => '',  
    'menu'            => '',  
    'container'       => 'div',  
    'container_class' => '',  
    'container_id'    => '',  
    'menu_class'      => 'menu',  
    'menu_id'         => '',  
    'echo'            => true,  
    'fallback_cb'     => 'wp_page_menu',  
    'before'          => '',  
    'after'           => '',  
    'link_before'     => '',  
    'link_after'      => '',  
    'items_wrap'      => '

    %3$s
',  
    'depth'           => 0,  
    'walker'          => '' 
);  
 
wp_nav_menu( $defaults );  
 
?>

其中,我们需要修改的就是walker参数。

输出Bootstrap导航栏结构菜单

在header.php中,通过如下代码输出导航栏菜单:

上面代码中walker参数的值是一个类,所以接下来你需要添加这个类,在主题的functions.php文件中添加下面代码:


 
/**
 * Class Name: wp_bootstrap_navwalker 
 * GitHub URI: https://github.com/twittem/wp-bootstrap-navwalker 
 * Description: A custom WordPress nav walker class to implement the Bootstrap 3 navigation style in a custom theme using the WordPress built in menu manager. 
 * Version: 2.0.4 
 * Author: Edward McIntyre - @twittem 
 * License: GPL-2.0+ 
 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt 
 */ 
 
class wp_bootstrap_navwalker extends Walker_Nav_Menu {  
 
    /**
     * @see Walker::start_lvl() 
     * @since 3.0.0 
     * 
     * @param string $output Passed by reference. Used to append additional content. 
     * @param int $depth Depth of page. Used for padding. 
     */ 
    public function start_lvl( &$output, $depth = 0, $args = array() ) {  
        $indent = str_repeat( "t", $depth );  
        $output .= "n$indent

';  
 
            if ( $container )  
                $fb_output .= '';  
 
            echo $fb_output;  
        }  
    }  
}

热门栏目