是的,这是可能的。
您可以使用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);