我需要<li>在锚标记之后添加分隔符,如下所示:
<li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"><a href="services">Services</a></li>
<li class="separator>//</li>
<li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"><a href="gallery">Gallery</a></li>
<li class="separator>//</li>
Run Code Online (Sandbox Code Playgroud)
小智 5
这是一个古老的问题,但我偶然发现了同样的问题并使用自定义Walker解决了这个问题.
首先,助手<li>在顶层后面添加一个分隔符:
class Main_Menu_Walker extends Walker_Nav_Menu{
function end_el( &$output, $item, $depth = 0, $args = array() ) {
$output .= "</li>\n";
if ($depth == 0)
$output .="<li class='separator'>|</li>\n";
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用li:last-child和隐藏最后一个分隔符或使用过滤器并在需要ie7支持时将其删除.这是我的过滤器:
function menu_remove_last_separator($items){
$separator = "<li class='separator'>|</li>";
$pos = strrpos($items, $separator);
if ($pos)
$items = substr_replace($items, '', $pos, strlen($separator));
return $items;
}
add_filter( 'wp_nav_menu_items','menu_remove_last_separator');
Run Code Online (Sandbox Code Playgroud)
现在你必须使用你的walker作为参数wp_nav_menu:
wp_nav_menu(array(
'theme_location' => 'navigation',
'container' => false,
'menu_class' => 'inline',
'walker' => new main_menu_walker()
)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4457 次 |
| 最近记录: |