我正在尝试,大约一个星期,以下面的模式创建菜单。。。。
<ul class="nav navbar-nav navbar-right">
<li></li>
<li class="drop"><a href="#">About<i class="fa fa-caret-down fa-lg padding-left"></i></a>
<ul class="dropdown">
<li></li>
<li></li>
</ul>
</li>
<li class="drop"><a href="#">My Experience<i class="fa fa-caret-down fa-lg padding-left"></i></a>
<ul class="dropdown">
<li></li>
</ul>
现在,我的菜单是这样的。。。。
<ul id="menu-main" class="nav navbar-nav navbar-right">
<li id="menu-item-78" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="#">Sample page</a></li>
<li id="menu-item-79" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children drop"><a href="#">Link 1</a>
<ul>
<li id="menu-item-80" class="menu-item menu-item-type-custom menu-item-object-custom"><a href="#">Link 2</a>
</li>
</ul>
</li>
</ul>
我的助行器如下。。。。。
class CSS_Menu_Walker extends Walker {
var $db_fields = array(\'parent\' => \'menu_item_parent\', \'id\' => \'db_id\');
function start_lvl(&$output, $depth = 0, $args = array()) {
$indent = str_repeat("\\t", $depth);
$output .= "\\n$indent<ul>\\n";
}
function end_lvl(&$output, $depth = 0, $args = array()) {
$indent = str_repeat("\\t", $depth);
$output .= "$indent</ul>\\n";
}
function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) {
global $wp_query;
$indent = ($depth) ? str_repeat("\\t", $depth) : \'\';
$class_names = $value = \'\';
$classes = empty($item->classes) ? array() : (array) $item->classes;
/* Add active class */
if (in_array(\'current-menu-item\', $classes)) {
$classes[] = \'active\';
unset($classes[\'current-menu-item\']);
}
/* Check for children */
$children = get_posts(array(\'post_type\' => \'nav_menu_item\', \'nopaging\' => true, \'numberposts\' => 1, \'meta_key\' => \'_menu_item_menu_item_parent\', \'meta_value\' => $item->ID));
if (!empty($children)) {
$classes[] = \'drop\';
}
$class_names = join(\' \', apply_filters(\'nav_menu_css_class\', array_filter($classes), $item, $args));
$class_names = $class_names ? \' class="\' . esc_attr($class_names) . \'"\' : \'\';
$id = apply_filters(\'nav_menu_item_id\', \'menu-item-\'. $item->ID, $item, $args);
$id = $id ? \' id="\' . esc_attr($id) . \'"\' : \'\';
$output .= $indent . \'<li\' . $id . $value . $class_names .\'>\';
$attributes = ! empty($item->attr_title) ? \' title="\' . esc_attr($item->attr_title) .\'"\' : \'\';
$attributes .= ! empty($item->target) ? \' target="\' . esc_attr($item->target ) .\'"\' : \'\';
$attributes .= ! empty($item->xfn) ? \' rel="\' . esc_attr($item->xfn ) .\'"\' : \'\';
$attributes .= ! empty($item->url) ? \' href="\' . esc_attr($item->url ) .\'"\' : \'\';
$item_output = $args->before;
$item_output .= \'<a\'. $attributes .\'>\';
$item_output .= $args->link_before . apply_filters(\'the_title\', $item->title, $item->ID) . $args->link_after;
$item_output .= \'</a>\';
$item_output .= $args->after;
$output .= apply_filters(\'walker_nav_menu_start_el\', $item_output, $item, $depth, $args);
}
function end_el(&$output, $item, $depth = 0, $args = array()) {
$output .= "</li>\\n";
}
}
菜单打印为。。。。
<?php wp_nav_menu(array(
\'menu\' => \'Main Menu\',
\'container\' => \'ul\',
\'container_id\' => \'\',
\'menu_class\' => \'nav navbar-nav navbar-right\',
\'walker\' => new CSS_Menu_Walker()
)); ?>