[英]Wordpress menu: Remove list-items and apply “.current-menu-item” to anchor tag
[英]add a class to anchor tag in current menu item in WordPress
function my_walker_nav_menu_start_el($item_output, $item, $depth, $args) {
$menu_locations = get_nav_menu_locations();
if ($item->menu_order == 1){
$item_output = preg_replace('/<a /', '<a class="active" ', $item_output, 1);
}
return $item_output;
}
add_filter('walker_nav_menu_start_el', 'my_walker_nav_menu_start_el', 10, 4);
上面的代码将<a class="active">
放入第一个菜单项。 我只想将此类放在当前菜单项(所选菜单)上。
任何帮助都会很棒。
谢谢
对的,这是可能的。
您可以使用wp_nav_menu_objects过滤器来实现。
function my_wp_nav_menu_objects($objects, $args) {
foreach($objects as $key => $item) {
$objects[$key]->classes[] = 'my-class';
}
return $objects;
}
add_filter('wp_nav_menu_objects', 'my_wp_nav_menu_objects', 10, 2);
唯一的问题是,这些类将添加到li元素中,而不是直接添加到链接中。 但这是默认的WordPress行为,我不认为您应该更改它。
如果确实需要更改它,仍然可以:
function my_walker_nav_menu_start_el($item_output, $item, $depth, $args) {
// you can put your if statements in here (use item, depth and args in conditions)
if ( $depth == 1 ) {
$item_output = preg_replace('/<a /', '<a class="level-1-menu" ', $item_output, 1);
} else if ( $depth == 2 )
$item_output = preg_replace('/<a /', '<a class="level-2-menu" ', $item_output, 1);
}
// .. and so on
return $item_output;
}
add_filter('walker_nav_menu_start_el', 'my_walker_nav_menu_start_el', 10, 4);
检查它在这里输入链接描述
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.