使用自定义CSS类的WP Walker

时间:2016-11-04 作者:Takararyuu

为了进行导航(从头开始),我一直在修改walker的输出。目前,我正在尝试将“可选CCS类”(在WP Admin的外观->菜单中找到)包含到输出项菜单(start\\el)中。我开始怀疑这一点是否可行。这就是为什么我需要你的帮助。我使用此数组确定项目是否有子项或是否处于活动状态:

$usedclasses = array(
    (in_array(\'current-menu-item\', $item->classes) ? \'current-menu-item\' : \'\'),
    (in_array(\'menu-item-has-children\', $item->classes) ? \'menu-item-has-children\' : \'\'),
    ($depth % 2 ? \'odd\' : \'even\')
); $class_names = \'class="\' . implode( \' \', $usedclasses ) . \'"\';
有没有一种方法可以添加自定义添加的类,而不必包含所有杂乱的类?因此,尽量避免使用:

$class_names = join( \' \', apply_filters( \'nav_menu_css_class\', array_filter( $classes ), $item, $args, $depth ) );
$class_names = $class_names ? \' class="\' . esc_attr( $class_names ) . \'"\' : \'\';

1 个回复
最合适的回答,由SO网友:Benoti 整理而成

不确定是否要这样做,但以防万一,您可以使用过滤器nav_menu_css_class :

function my_special_nav_class( $classes, $item ) {

   if ( is_single() && $item->title == \'Blog\' ) {
      $classes[] = \'special-class\';
   }

   return $classes;

}

add_filter( \'nav_menu_css_class\', \'my_special_nav_class\', 10, 2 );
您将找到更多示例here