所以,我创建了一个自定义walker类,允许我将下拉菜单项包装在容器中,以便我可以添加自定义背景,并控制样式。很多原因,为什么,我和我的团队决定我们这样做。但是,ONE元素的下拉列表现在需要包含在一个标签中以链接到赞助商。当然,我可以操纵自定义Walker,但这会添加到所有目标元素的链接。
所以我想知道的是,是否有可能只针对我需要的ONE下拉列表。让我们说它是li#menu-item-18
这是我的自定义Walker代码
private
答案 0 :(得分:1)
您可以在自定义类中重新定义父类的start_el
方法,但这似乎需要复制很多代码以进行最小的更改(我不喜欢它)。
更好的解决方案是在父方法walker_nav_menu_start_el
的末尾使用过滤器挂钩,仅为所需的项添加包装器,如下所示:
add_filter('walker_nav_menu_start_el', function($item_output, $item, $depth, $args){
if( 18 == $item->ID && 'menu genesis-nav-menu menu-primary' === $args['menu_class'] )
return sprintf('<div class="targeted">%s</div>', $item_output);
return $item_output;
}, 10, 4);
根据您的喜好更改包装div
。