2015-12-05 8 views
0

Ниже приведен фильтр, который применяется для пользовательских типов сообщений «Портфолио» .. он удалил активный класс из меню «Блог» и выделил меню с ID 123, он отлично работает .. it выделите мое меню с идентификатором 123, которое является «Портфолио», но оно применимо только к основной основной навигации, я имею в виду, что у меня есть два разных меню, которые сделаны с пользовательским Walker_Nav_Menu, он не применяется к этому ...Применение фильтра nav_menu_css_class к пользовательскому классу Walker_Nav_Menu

поэтому, если я добавлю этот «walker» => new my_walker() в мой код, он не применит следующий фильтр, но в противном случае он отлично работает. Может кто-нибудь, пожалуйста, скажите мне, как я могу применить это к пользовательскому классу walker на в то же время? .. спасибо ..

function remove_parent_classes($class) 
    { 
     // check for current page classes, return false if they exist. 
     return ($class == 'current_page_item' || $class ==  'current_page_parent' || $class == 'current_page_ancestor' || $class == 'current-menu-item') ? FALSE : TRUE; 
    } 

    function add_class_to_wp_nav_menu($classes) 
    { 
      switch (get_post_type()) 
      { 
      case 'portfolio': 
       // we're viewing a custom post type, so remove the 'current_page_xxx and current-menu-item' from all menu items. 
       $classes = array_filter($classes, "remove_parent_classes"); 

       // add the current page class to a specific menu item (replace ###). 
       if (in_array('menu-item-123', $classes)) 
       { 
        $classes[] = 'current_page_parent'; 
       } 
       break; 

      // add more cases if necessary and/or a default 
      } 
     return $classes; 
    } 
    add_filter('nav_menu_css_class', 'add_class_to_wp_nav_menu'); 
+0

вы можете разместить 'start_el' метод код пользовательских ходунки? – d79

+0

спасибо fd7 ... ниже мой код el .. – user1718343

+0

его здесь .. can not post в моем ответе .. http://pastebin.com/Lb8x53T8 – user1718343

ответ

1

Попробуйте добавить $item аргумент:

function add_class_to_wp_nav_menu($classes, $item) 
{ 
    switch (get_post_type($item->ID)) 
    { 
     case 'portfolio': 
      $classes = array_filter($classes, "remove_parent_classes"); 

      if (123 == $item->ID) 
      { 
       $classes[] = 'current_page_parent'; 
      } 
      break; 
    } 
    return $classes; 
} 
add_filter('nav_menu_css_class', 'add_class_to_wp_nav_menu', 10, 2); 
+0

Спасибо d79 .. это сработало Мне только пришлось изменить эту часть, чтобы сделать он работает: switch (get_post_type()), он не работает с $ item-> ID .... СПАСИБО МНОГО ... – user1718343

Смежные вопросы