如果你能使用built-in nav menu css classes 您应该这样做,但如果这些还不够的话,有一个很好的小过滤器可以帮助处理css类。如果需要CSS类以外的其他类,可以使用Custom Walker (正如ialocin所建议的)并使用与以下函数相同的逻辑。
Add some CSS Classes to WP Nav Menu
/** Custom `wp_nav_menu()` Classes **/
function add_class_to_wp_nav_menu( $classes, $item ) {
if( hasChildren( $item->object_id ) ) { // hasChildren is a Custom Function
array_push( $classes, \'has-children\' );
}
if( 0 !== wp_get_post_parent_id( $item->object_id ) ) { // 0 means there is no parent
array_push( $classes, \'has-parent\' );
}
return $classes;
}
add_filter( \'nav_menu_css_class\', \'add_class_to_wp_nav_menu\', 10, 2 );
/** Check if Page has Children **/
function has_children( $pid ) {
$children = get_pages( "child_of={$pid}" );
return ( $children );
}