Ejemplo n.º 1
0
 /**
  * Convert a WP menu structure to an associative array.
  *
  * @param array $item An menu item.
  * @param int $position The position (index) of the the menu item.
  * @param string $parent The slug of the parent menu that owns this item. Blank for top level menus.
  * @return array
  */
 public static function fromWpItem($item, $position = 0, $parent = '')
 {
     static $separator_count = 0;
     $default_css_class = empty($parent) ? 'menu-top' : '';
     $item = array('menu_title' => $item[0], 'access_level' => $item[1], 'file' => $item[2], 'page_title' => isset($item[3]) ? $item[3] : '', 'css_class' => isset($item[4]) ? $item[4] : $default_css_class, 'hookname' => isset($item[5]) ? $item[5] : '', 'icon_url' => isset($item[6]) ? $item[6] : 'dashicons-admin-generic', 'position' => $position, 'parent' => $parent);
     if (is_numeric($item['access_level'])) {
         $dummyUser = new WP_User();
         $item['access_level'] = $dummyUser->translate_level_to_cap($item['access_level']);
     }
     if (empty($parent)) {
         $item['separator'] = empty($item['file']) || empty($item['menu_title']) || strpos($item['css_class'], 'wp-menu-separator') !== false;
         //WP 3.0 in multisite mode has two separators with the same filename. Fix by reindexing separators.
         if ($item['separator']) {
             $item['file'] = 'separator_' . $separator_count++;
         }
     } else {
         //Submenus can't contain separators.
         $item['separator'] = false;
     }
     //Flag plugin pages
     $item['is_plugin_page'] = get_plugin_page_hook($item['file'], $parent) != null;
     if (!$item['separator']) {
         $item['url'] = self::generate_url($item['file'], $parent);
     }
     $item['template_id'] = self::template_id($item, $parent);
     return array_merge(self::basic_defaults(), $item);
 }