Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Filters nav menu objects & items in your menus to add distinct custom classes to each item.
- * Identifies last menu object and adds custom class for last item.
- * @param object $objects An array of nav menu objects
- * @param object $args Nav menu object args
- * @return object $objects Amended array of nav menu objects with new class
- * Original code: http://pastebin.com/WMhBfFqR - does not identify child elements correctly
- * Working Solution Pastebin: http://pastebin.com/T0hr6sEx
- */
- add_filter( 'wp_nav_menu_objects', 'vm_filter_menu_classes', 10, 2 );
- function vm_filter_menu_classes( $objects, $args ) {
- if ( isset( $args->theme_location ) )
- if ( 'primary' !== $args->theme_location ) // Only apply the classes to the primary navigation menu
- return $objects;
- $navObjects = wp_get_nav_menu_object( 'main' ); // this is the custom menu name
- $objCount = $navObjects->count;
- $i=0;
- $navItems = wp_get_nav_menu_items( $navObjects ); //ref link: http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items
- $navParentsArray = array ();
- foreach($navItems as $navItem){
- $i++; // increment counter
- $itemID = $navItem->ID;
- $itemTitle = $navItem->post_title;
- $itemParent = $navItem->menu_item_parent;
- $itemObjectID = $navItem->object_id;
- $itemDB_ID = $navItem->db_id;
- $itemPostName = $navItem->post_name; // returns page/post ID
- if ( ( $itemParent == "0" ) ) {
- $n=0;
- $itemParents = $itemParents+1;
- $saveParent = $itemDB_ID;
- array_push($navParentsArray, $itemID);
- $objects[$i]->classes[] = 'vm-parent-item-' . $i; // Add distinct class to menu parent objects
- if ( $i == $objCount ) {
- $objects[$i]->classes[] = 'vm-last-menu-item'; // Add "last-menu-item" class to the last menu object
- }
- }
- if ( ( $itemParent <> "0" ) ) {
- $n=$n+1;
- $objects[$i]->classes[] = 'vm-parent-' . $saveParent . '-child-' . $n; // Add distinct class to menu parent objects
- }
- } // end foreach
- return $objects;
- } // end vm_filter_menu_classes
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement