コード例 #1
0
 /**
  * Get mega menu tab content
  *
  * @since  1.0.0
  *
  * @param  int    $id    menu item ID
  * @param  string $title menu item title
  * @param  int    $depth menu item depth
  * @param  array  $meta  menu item meta
  * @return string        tab HTML
  */
 public function mega_menu($id, $title, $depth, $meta)
 {
     if ($depth > 0) {
         return '<em>' . __("Mega Menus can only be created on top level menu items.", "megamenu") . '</em>';
     }
     global $cherry_mega_menu_total_columns;
     $widget_manager = new cherry_mega_menu_widget_manager();
     $all_widgets = $widget_manager->get_available_widgets();
     $meta['type'] = isset($meta['type']) ? $meta['type'] : '';
     $return = '<label class="menu_enable"><input class="toggle_menu" type="checkbox" name="type" value="megamenu" ' . checked($meta['type'], 'megamenu', false) . '/>' . __("Enable Mega Menu for current item", "cherry-mega-menu") . '</label>';
     $return .= '<select id="widget_selector">';
     $return .= '<option value="disabled">' . __("Select a Widget to add to the panel", "cherry-mega-menu") . '</option>';
     foreach ($all_widgets as $widget) {
         $return .= '<option value="' . $widget['value'] . '">' . $widget['text'] . '</option>';
     }
     $return .= '</select>';
     $return .= '<div id="widgets">';
     $panel_widgets = $widget_manager->get_widgets_for_menu_id($id);
     if (!count($panel_widgets)) {
         $return .= '<div class="message no_widgets">' . __("No widgets found", "cherry-mega-menu") . '<br /><br /><i>' . __("Use the Widget Selector (top right) to add a Widget to this panel.", "cherry-mega-menu") . '</i></div>';
     } else {
         foreach ($panel_widgets as $widget) {
             $return .= $widget_manager->get_widget_html($widget['title'], $widget['widget_id'], $widget['mega_columns'], $cherry_mega_menu_total_columns);
         }
     }
     $return .= '</div>';
     return $return;
 }
コード例 #2
0
 /**
  * Append the widget objects to the menu array before the
  * menu is processed by the walker.
  *
  * @since 1.0.0
  *
  * @param  array  $items  all menu item objects
  * @param  object $args
  * @return array          menu objects including widgets
  */
 public function add_menu_objects($items, $args)
 {
     // make sure we're working with a Mega Menu
     if (!is_a($args->walker, 'cherry_mega_menu_walker')) {
         return $items;
     }
     $widget_manager = new cherry_mega_menu_widget_manager();
     foreach ($items as $item) {
         $saved_settings = array_filter((array) get_post_meta($item->ID, '_cherry_mega_menu', true));
         $item->megamenu_settings = wp_parse_args($saved_settings, array('type' => ''));
         // only look for widgets on top level items
         if ($item->menu_item_parent != 0 || $item->megamenu_settings['type'] != 'megamenu') {
             continue;
         }
         $panel_widgets = $widget_manager->get_widgets_for_menu_id($item->ID);
         if (empty($panel_widgets)) {
             continue;
         }
         if (!in_array('menu-item-has-children', $item->classes)) {
             $item->classes[] = 'menu-item-has-children';
         }
         $cols = 0;
         $item_appended = $this->append_widgets($panel_widgets, $item, $widget_manager);
         $items = array_merge($items, $item_appended);
     }
     return $items;
 }