我现在正在努力练习助行器,但我需要一些帮助来达到我想要的效果。
我的walker函数如下所示:
class ik_walker extends Walker_Nav_Menu{
//start of the sub menu wrap
function start_lvl(&$output, $depth) {
$output .= \'<nav class="site-navigation" role="navigation">
<ul>\';
}
//end of the sub menu wrap
function end_lvl(&$output, $depth) {
$output .= \'
</ul>
<button id="menu" class="menu-button" type="button" role="button" aria-label="Menu Toggle">
<span class="icon-menu"></span>
</button>
</div>\';
}
//add the description to the menu item output
function start_el(&$output, $item, $depth, $args) {
global $wp_query;
$indent = ( $depth ) ? str_repeat( "\\t", $depth ) : \'\';
$class_names = $value = \'\';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$class_names = join( \' \', apply_filters( \'nav_menu_css_class\', array_filter( $classes ), $item ) );
$class_names = \' class="\' . esc_attr( $class_names ) . \'"\';
$output .= $indent . \'<li id="menu-item-\'. $item->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;
if(strlen($item->description)>2){ $item_output .= \'<br /><span class="sub">\' . $item->description . \'</span>\'; }
$item_output .= \'</a>\';
$item_output .= $args->after;
$output .= apply_filters( \'walker_nav_menu_start_el\', $item_output, $item, $depth, $args );
}
}
我需要的是每个
a
在
li
拥有自己的课程
c
然后是一个数字-从1开始。
<a href="[link]" class="c1"></a>
<a href="[link]" class="c2"></a>
<a href="[link]" class="c3"></a>
然后我需要一个
span
在每个a之后,有一个类的时候我可以指定一个地方,如果可能的话?我知道如何获得
span
在那里,但我无法从我的搜索中找出您是否确实可以设置特定的单独类,因为我需要执行以下操作:
<span class="paw-icon"></span>
任何帮助都将不胜感激。
最合适的回答,由SO网友:tfrommen 整理而成
可以这样尝试:
class ik_walker extends Walker_Nav_Menu {
function start_lvl(&$output, $depth) {
$GLOBALS[\'ik_walker_counter\'] = 0;
$output .= \'<nav class="site-navigation" role="navigation">\'.
\'<ul>\';
}
function end_lvl(&$output, $depth) {
$output .= \'</ul>\'.
\'<button id="menu" class="menu-button" type="button" role="button" aria-label="Menu Toggle">\'.
\'<span class="icon-menu"></span>\'.
\'</button>\'.
\'</div>\';
}
function start_el(&$output, $item, $depth, $args) {
global $wp_query;
global $ik_walker_counter;
$indent = ( $depth ) ? str_repeat( "\\t", $depth ) : \'\';
$class_names = $value = \'\';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$class_names = join( \' \', apply_filters( \'nav_menu_css_class\', array_filter( $classes ), $item ) );
$class_names = \' class="\' . esc_attr( $class_names ) . \'"\';
$output .= $indent . \'<li id="menu-item-\'. $item->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 ) .\'"\' : \'\';
$attributes .= \' class="c\'.(++$ik_walker_counter).\'"\';
$item_output = $args->before;
$item_output .= \'<a\'. $attributes .\'>\';
$item_output .= $args->link_before . apply_filters( \'the_title\', $item->title, $item->ID ) . $args->link_after;
if(strlen($item->description)>2){ $item_output .= \'<br /><span class="sub">\' . $item->description . \'</span>\'; }
$item_output .= \'</a>\';
$item_output .= \'<span class="\'.$args->my_individual_class.\'"></span>\';
$item_output .= $args->after;
$output .= apply_filters( \'walker_nav_menu_start_el\', $item_output, $item, $depth, $args );
}
}
您的
c1
通过
cn
类别由全球
$ik_walker_counter
变量,每次启动新级别时都会重置该变量。单个类在
walker arguments (例如。,
\'my_individual_class\' => \'paw-icon\'
.