html menu函数的功能,让WordPress的 wp_nav_menu 函数支持Bootstrap 3

WordPress的菜单函数wp_nav_menu()输出了固定的html结构,我们可以基于这些结构写CSS样式。如果你主题的CSS是基于BootStrap开发的,直接使用BootStrap的导航样式无疑是一种省时省力的方法,我们只需要修改一下WordPress wp_nav_menu() 函数输出的HTML结构,让它和bootstrap的一样就可以了。

第一步: 添加自定义Walker_Nav_Menu 类到主题的 functions.php

class BS3_Walker_Nav_Menu extends Walker_Nav_Menu {

function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) {

$id_field = $this->db_fields['id'];

if ( isset( $args[0] ) && is_object( $args[0] ) )

{

$args[0]->has_children = ! empty( $children_elements[$element->$id_field] );

}

return parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );

}

function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {

if ( is_object($args) && !empty($args->has_children) )

{

$link_after = $args->link_after;

$args->link_after = ' ';

}

parent::start_el($output, $item, $depth, $args, $id);

if ( is_object($args) && !empty($args->has_children) )

$args->link_after = $link_after;

}

function start_lvl( &$output, $depth = 0, $args = array() ) {

$indent = '';

$output .= "$indent

  • ";

}

}

第二步, 添加filter功能过滤修改上一步未能修改的HTML

add_filter('nav_menu_link_attributes', 'nav_link_att', 10, 3);

function nav_link_att($atts, $item, $args) {

if ( $args->has_children )

{

$atts['data-toggle'] = 'dropdown';

$atts['class'] = 'dropdown-toggle';

}

return $atts;

}

第三步, 添加HTML到 header.php 中

Toggle navigation

'container_class' => 'menu-header',

'theme_location' => 'primary',

'items_wrap' => '

  • %3$s
',

'walker' => new BS3_Walker_Nav_Menu,

'menu' => 'Your Menu'

)); ?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值