wp_nav_menu, füge class zu jedem n-ten Item hinzu?

Gibt es eine Möglichkeit, mit wp_nav_menu jedem n-ten Element in einem Menü eine class hinzuzufügen?

Es wird versucht, Spalten zu erstellen, dem dritten Element muss jedoch eine “letzte” class hinzugefügt werden.

Prost! Dc

Solutions Collecting From Web of "wp_nav_menu, füge class zu jedem n-ten Item hinzu?"

Sie können jQuery dazu verwenden. Versuchen Sie dies in Ihrer Kopfzeile:

$(document).ready(function() { $("#mymenu li:nth-child(3n+3)").addClass("last"); }); 

Hinweis : Damit dies funktioniert, müssen Sie jQuery in die Warteschlange eingereiht haben.

Nth ist bereits eine class, es ist eine Pseudoklasse.

Warum .last du nicht einfach das .last , das auf #nav li:nth-child(3) angewendet wurde und .last es an #nav li:nth-child(3) . Wenn Sie jeden dritten Menüpunkt anvisieren müssen, wäre #nav li:nth-child(3n+3)

Bearbeiten:

Oh yah ich habe vergessen, Unterstützung für diese lästigen Steinzeit Browser zu erwähnen.

Glücklicherweise gibt es einige gute Javascript-Bibliotheken und jQuery-Plugins, die CSS-Unterstützung für IE <9 hinzufügen

  • jQuery Erweiterte Selektoren
  • Selecivizr
  • ie7js

habe am Ende so funktioniert …

 function add_nthclass($items, $args){ $scb = get_object_vars($args); switch($scb['menu']) { case 'mainpages': $nth = 2; $items = explode('',$items); $newitems = array(); // loop through the menu items, and add the new link at the right position foreach($items as $index => $item) { if(($index+1) % $nth == 0){ $newitems[] = str_replace('class="', 'class="last ', $item); }else{ $newitems[]= $item; } } // finally put all the menu items back together into a string using the ending 
  • tag and return $newitems = implode('
  • ',$newitems); case 'footer': // footer menu nth funcs... default: $newitems = $items; } // End switch return $newitems; } add_filter('wp_nav_menu_items', 'add_nthclass', 10, 2);

    Wenn Sie nur die class .last zum letzten .last hinzufügen .last , ist dies ein wesentlich kürzerer Weg:

     /**********************************************************/ /* add .last to last menu item */ /**********************************************************/ add_filter('wp_nav_menu', 'add_last'); function add_last($output) { $output = substr_replace($output, 'class="last menu-item', strripos($output, 'class="menu-item'), strlen('class="menu-item')); return $output; }; 

    Wenn Sie auch Untermenüs haben, können Sie den folgenden Code verwenden (Danke an diesen Artikel ).

     add_filter('wp_nav_menu', 'add_last'); function add_last($menuHTML) { $last_items_ids = array(); // Get all custom menus $menus = wp_get_nav_menus(); // For each menu find last items foreach ( $menus as $menu_maybe ) { // Get items of specific menu if ( $menu_items = wp_get_nav_menu_items($menu_maybe->term_id) ) { $items = array(); foreach ( $menu_items as $menu_item ) { $items[$menu_item->menu_item_parent][] .= $menu_item->ID; } // Find IDs of last items foreach ( $items as $item ) { $last_items_ids[] .= end($item); } } } foreach( $last_items_ids as $last_item_id ) { $items_add_class[] .= ' menu-item-'.$last_item_id; $replacement[] .= ' menu-item-'.$last_item_id . ' last'; } $menuHTML = str_replace($items_add_class, $replacement, $menuHTML); return $menuHTML; };