Advertisement
miriamdepaula

WordPress: Remove links from parent menu item

Nov 22nd, 2013
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.50 KB | None | 0 0
  1. add_filter( 'wp_nav_menu_objects',      'wpmidia_add_has_children_to_nav_items' );
  2. add_filter( 'walker_nav_menu_start_el', 'wpmidia_unlink_parent_item', 10, 4 );
  3.  
  4. function wpmidia_add_has_children_to_nav_items( $items )
  5. {
  6.     $parents = wp_list_pluck( $items, 'menu_item_parent' );
  7.     $out     = array ();
  8.  
  9.     foreach ( $items as $item )
  10.     {
  11.         in_array( $item->ID, $parents ) && $item->has_children = TRUE;
  12.         $out[] = $item;
  13.     }
  14.     return $items;
  15. }
  16.  
  17. function wpmidia_unlink_parent_item( $item_output, $item, $depth, $args )
  18. {
  19.     // not first level parent item
  20.     if ( empty ( $item->has_children ) or 0 != $item->menu_item_parent )
  21.         return $item_output;
  22.  
  23.     $title = apply_filters(
  24.         'the_title',
  25.         $item->title,
  26.         $item->ID
  27.     );
  28.     $id = apply_filters(
  29.         'nav_menu_item_id',
  30.         'menu-item-'. $item->ID,
  31.         $item, $args
  32.     );
  33.     $id = $id ? ' id="' . esc_attr( $id ) . '"' : '';
  34.  
  35.     $classes = empty( $item->classes ) ? array() : (array) $item->classes;
  36.     $classes[] = 'menu-item-' . $item->ID;
  37.     $classes[] = 'has-children';
  38.     $class_names = join(
  39.         ' ',
  40.         apply_filters(
  41.             'nav_menu_css_class',
  42.             array_filter( $classes ),
  43.             $item,
  44.             $args
  45.         )
  46.     );
  47.     $class_names = $class_names
  48.         ? ' class="' . esc_attr( $class_names ) . '"'
  49.         : '';
  50.  
  51.     return "<li$id>$args->before<a class='menu-item has-children'>$title</a>$args->after";
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement