/** * Get a URL for a page in this component. This method will automatically * return submenu-friendly URLs when a submenu item matches the supplied * page and params arguments. * * @param ComponentAbstract $component * @param string $page * @param array $params * @return string */ public function url(ComponentAbstract $component, $page, array $params = array()) { $base = get_bloginfo('wpurl') . '/wp-admin/admin.php?page=' . $component->getSlug(); $query = $this->assembleQueryString($params, $separator = '&'); foreach ($component->getSubmenuPages() as $submenu) { if ($submenu['route'] === $page) { $submenuParams = $submenu['params']; $matchesSubmenu = true; foreach ($params as $name => $value) { if (!isset($submenuParams[$name]) || $submenuParams['value'] !== $value) { $matchesSubmenu = false; break; } } if ($matchesSubmenu) { if ('Index' === $submenu['route']) { $route = ''; } else { $route = '/' . $submenu['route']; } return $this->filterUrl("{$base}{$route}{$query}"); } } } return $this->filterUrl("{$base}&route={$page}{$query}"); }