向wp_NAV_MENU的所有列表项添加类

时间:2014-01-19 作者:Maartje

我有一个wp_nav_menu 我想在列表项中添加一个类。我知道这可以通过从屏幕选项菜单中选择“css类”来实现,但是我必须给出每一个li 一个班级。

我有两种深度的菜单。(例如)

所有我想给类lidepth1的正常li,所有我想给类lidept2的子菜单li,在wp_nav_menu 作用我搜索了抄本,但只找到了“之前链接”和“之后链接”,但我认为这不是我需要的。

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

有一个nav_menu_css_class 滤器添加类很简单。

function add_classes_wpse_130358($classes, $item, $args) {
  $classes[] = \'new-class\';
  return $classes;
}
add_filter(\'nav_menu_css_class\',\'add_classes_wpse_130358\',1,3);
但您可能需要扩展Walker_Nav_Menu 或使用walker_nav_menu_start_el 而是筛选,因为nav_menu_css_class 筛选器无法访问depth 变量但是walker_nav_menu_start_el 不允许您在需要的地方设置类,因此假设您的PHP足够新。。。

function depth_classes_wpse_130358($item_output, $item, $depth, $args) {
  add_action(
    \'nav_menu_css_class\',
    function() use ($depth) {
      $depth++;
      $classes[] = "depth-{$depth}";
      return $classes;
    }
  );
  return $item_output;
}
add_filter(\'walker_nav_menu_start_el\',\'depth_classes_wpse_130358\',1,4);
你会得到depth-N 对于大于0的每个级别。

我不记得曾经需要这样做。现有的标记一直都是足够的,但现在就可以了。

结束

相关推荐

在小部件中使用wp_ategory_check list

我正在尝试在小部件中使用wp\\U category\\U checklist来显示复选框列表,保存后,这些复选框仍保持勾选状态。目前,我很难让他们保存,据我所知,这并没有保存(复选框仍然没有勾选):-这是我目前编辑的代码。function update($new_instance, $old_instance) { $instance = $old_instance; $instance[\'widget_categories\'] = $new_instance[\'p