s $parent) { $menuPageURL = menu_page_url($parent, false); if (!empty($menuPageURL)) { $settings['parent'] = $parent; break; } } } if (!empty($settings['parent'])) { $submenuSlug = $this->getSubmenuSlug($settings); add_submenu_page( $settings['parent'], $settings['label'], $settings['label'], 'read', $submenuSlug, function () use ($settings, $templateLoader) { $context = [ 'message' => __( 'Amazing! We are redirecting you to our site...', 'wordpress-version-notices' ), 'link' => $settings['link'] ]; $templateLoader->displayOutput('menu-link', 'redirect-page', $context); }, 9999 ); $this->urlsMap[$pluginName] = [ 'slug' => $submenuSlug, 'localUrl' => menu_page_url($submenuSlug, false), 'redirectTo' => $settings['link'], ]; // Add the CSS class to change the item color and add a reference to the respective URL. $newItemIndex = false; if (isset($submenu[$settings['parent']])) { $newItemIndex = $this->getUpgradeMenuItemIndex($submenu[$settings['parent']], $settings); } if (false !== $newItemIndex) { $submenu[$settings['parent']][$newItemIndex][4] = 'pp-version-notice-upgrade-menu-item ' . $pluginName; } } } } private function getUpgradeMenuItemIndex($submenuItems, $settings) { if (!is_array($submenuItems)) { return false; } foreach ($submenuItems as $index => $item) { if ($item[0] === $settings['label'] && $item[2] === $this->getSubmenuSlug($settings)) { return $index; } } return false; } public function setUpgradeMenuLink() { if (empty($this->urlsMap)) { return; } $convertedUrlsMap = []; foreach ($this->urlsMap as $pluginName => $urlData) { $urlData['pluginName'] = $pluginName; $convertedUrlsMap[] = $urlData; } $context = [ 'convertedUrlsMap' => $convertedUrlsMap, ]; $this->templateLoader->displayOutput('menu-link', 'menu-link-script', $context); } }