Skip to content

Instantly share code, notes, and snippets.

@bradyvercher
Last active October 13, 2015 20:58
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bradyvercher/4254893 to your computer and use it in GitHub Desktop.
Save bradyvercher/4254893 to your computer and use it in GitHub Desktop.
WordPress: Helpful nav menu classes.
<?php
add_filter( 'wp_nav_menu_objects', 'blazersix_nav_menu_classes', 10, 2 );
/**
* Add helpful nav menu item classes.
*
* Adds class hooks to various nav menu items since child pseudo selectors
* aren't supported in all browsers.
*/
function blazersix_nav_menu_classes( $items, $args ) {
$classes = array();
foreach ( $items as $key => $item ) {
if ( empty( $item->menu_item_parent ) ) {
$last_top = $key;
} else {
if ( ! isset( $classes['first-submenu-items'][ $item->menu_item_parent ] ) ) {
$classes['first-submenu-items'][ $item->menu_item_parent ] = $key;
$items[ $key ]->classes[] = 'first-sub-menu-item';
}
$classes['last-submenu-items'][ $item->menu_item_parent ] = $key;
}
}
$items[1]->classes[] = 'first-menu-item';
$items[ $last_top ]->classes[] = 'last-menu-item';
if ( isset( $classes['last-submenu-items'] ) ) {
foreach ( $classes['last-submenu-items'] as $item_id ) {
$items[ $item_id ]->classes[] = 'last-sub-menu-item';
}
}
return $items;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment