Skip to content

Instantly share code, notes, and snippets.

@micjamking
Created November 30, 2015 23:18
Show Gist options
  • Save micjamking/3b79024f56b049e4338d to your computer and use it in GitHub Desktop.
Save micjamking/3b79024f56b049e4338d to your computer and use it in GitHub Desktop.
WordPress Navigation Menu Customizations for Foundation Top Bar
<?php
/**
* Add a parent class for menu item
*/
function add_menu_parent_class( $items ) {
$parents = array();
foreach ( $items as $item ) {
if ( $item->menu_item_parent && $item->menu_item_parent > 0 ) {
$parents[] = $item->menu_item_parent;
}
}
foreach ( $items as $item ) {
if ( in_array( $item->ID, $parents ) ) {
$item->classes[] = 'has-dropdown';
}
}
return $items;
}
add_filter( 'wp_nav_menu_objects', 'add_menu_parent_class' );
/**
* Add a class to sub menu
*/
class Sub_Menu extends Walker_Nav_Menu {
// add classes to ul sub-menus
function start_lvl( &$output, $depth ) {
$indent = ( $depth > 0 ? str_repeat( "\t", $depth ) : '' );
$display_depth = ( $depth + 1);
$class_names = 'dropdown';
$output .= "\n" . $indent . '<ul class="' . $class_names . '">' . "\n";
}
}
/**
* Remove extraneous WordPress classes & id's
*/
function my_css_attributes_filter($var) {
return is_array($var) ? array_intersect($var, array('current-menu-item', 'has-dropdown', 'logged-in')) : '';
}
add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 1);
add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1);
add_filter('page_css_class', 'my_css_attributes_filter', 100, 1);
@micjamking
Copy link
Author

<?php 
    $args = array(
        'theme_location' => 'primary',
        'container'          => false,
        'walker'              => new Sub_Menu
    );
    wp_nav_menu( $args ); 
?>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment