为此,我非常倾向于使用定制的助行器,但我想我已经成功地使用了部分代码和我自己的一些代码。
function add_position_classes_wpse_100781($classes, $item, $args) {
static $fl;
if (0 == $item->menu_item_parent) {
$fl = (empty($fl)) ? \'first\' : \'middle\';
$classes[] = $fl.\'-menu-item\';
}
return $classes;
}
add_filter(\'nav_menu_css_class\',\'add_position_classes_wpse_100781\',1,3);
function replace_class_on_last_occurance_wpse_100781($output) {
$output = substr_replace(
$output,
\'last-menu-item \',
strripos($output, \'middle-menu-item\'),
strlen(\'middle-menu-item\')
);
return $output;
}
add_filter(\'wp_nav_menu\', \'replace_class_on_last_occurance_wpse_100781\');
我所做的是添加
first-menu-item
和
middle-menu-item
仅在打开第一个筛选器的情况下转到顶级项目
nav_menu_css_class
. 然后用第二个过滤器替换最后出现的
middle-menu-item
具有
last-menu-item
.
它适用于我尝试的几个测试用例。