Ejemplo n.º 1
0
 /**
  * Append the widget objects to the menu array before the
  * menu is processed by the walker.
  *
  * @since 1.0
  * @param array $items - All menu item objects
  * @param object $args
  * @return array - Menu objects including widgets
  */
 public function add_widgets_to_menu($items, $args)
 {
     // make sure we're working with a Mega Menu
     if (!is_a($args->walker, 'Mega_Menu_Walker')) {
         return $items;
     }
     $items = apply_filters("megamenu_nav_menu_objects_before", $items, $args);
     $widget_manager = new Mega_Menu_Widget_Manager();
     $default_columns = apply_filters("megamenu_default_columns", 1);
     foreach ($items as $item) {
         // only look for widgets on top level items
         if ($item->depth == 0 && $item->megamenu_settings['type'] == 'megamenu') {
             $panel_widgets = $widget_manager->get_widgets_for_menu_id($item->ID);
             if (count($panel_widgets)) {
                 if (!in_array('menu-item-has-children', $item->classes)) {
                     $item->classes[] = 'menu-item-has-children';
                 }
                 $cols = 0;
                 foreach ($panel_widgets as $widget) {
                     $menu_item = array('type' => 'widget', 'title' => '', 'content' => $widget_manager->show_widget($widget['widget_id']), 'menu_item_parent' => $item->ID, 'db_id' => 0, 'ID' => $widget['widget_id'], 'menu_order' => $item->menu_order + 1, 'classes' => array("menu-item", "menu-item-type-widget", "menu-columns-{$widget['mega_columns']}-of-{$item->megamenu_settings['panel_columns']}", "menu-widget-class-" . $widget_manager->get_widget_class($widget['widget_id'])));
                     if ($cols == 0) {
                         $menu_item['classes'][] = "menu-clear";
                     }
                     $cols = $cols + $widget['mega_columns'];
                     if ($cols > $item->megamenu_settings['panel_columns']) {
                         $menu_item['classes'][] = "menu-clear";
                         $cols = $widget['mega_columns'];
                     }
                     $items[] = (object) $menu_item;
                 }
             }
         }
     }
     $items = apply_filters("megamenu_nav_menu_objects_after", $items, $args);
     return $items;
 }
Ejemplo n.º 2
0
 /**
  * Append the widget objects to the menu array before the
  * menu is processed by the walker.
  *
  * @since 1.0
  * @param array $items - All menu item objects
  * @param object $args
  * @return array - Menu objects including widgets
  */
 public function add_widgets_to_menu($items, $args)
 {
     // make sure we're working with a Mega Menu
     if (!is_a($args->walker, 'Mega_Menu_Walker')) {
         return $items;
     }
     $items = apply_filters("megamenu_nav_menu_objects_before", $items, $args);
     $widget_manager = new Mega_Menu_Widget_Manager();
     foreach ($items as $item) {
         // only look for widgets on top level items
         if ($item->depth === 0 && $item->megamenu_settings['type'] == 'megamenu') {
             $panel_widgets = $widget_manager->get_widgets_for_menu_id($item->ID, $args->menu);
             if (count($panel_widgets)) {
                 $widget_position = 0;
                 $total_widgets_in_menu = count($panel_widgets);
                 $next_order = $this->menu_order_of_next_top_level_item($item->ID, $items);
                 if (!in_array('menu-item-has-children', $item->classes)) {
                     $item->classes[] = 'menu-item-has-children';
                 }
                 foreach ($panel_widgets as $widget) {
                     $widget_settings = array_merge(Mega_Menu_Nav_Menus::get_menu_item_defaults(), array('mega_menu_columns' => absint($widget['columns'])));
                     $menu_item = array('type' => 'widget', 'in_megamenu' => true, 'title' => $widget['id'], 'content' => $widget_manager->show_widget($widget['id']), 'menu_item_parent' => $item->ID, 'db_id' => 0, 'ID' => $widget['id'], 'menu_order' => $next_order - $total_widgets_in_menu + $widget_position, 'megamenu_order' => $widget['order'], 'megamenu_settings' => $widget_settings, 'depth' => 1, 'classes' => array("menu-item", "menu-item-type-widget", "menu-widget-class-" . $widget_manager->get_widget_class($widget['id'])));
                     $items[] = (object) $menu_item;
                     $widget_position++;
                 }
             }
         }
     }
     $items = apply_filters("megamenu_nav_menu_objects_after", $items, $args);
     return $items;
 }