$menuItem->id, 'title' => $menuItem->title, 'href' => $menuItem->href, ]; if ($parentId !== null) { $args['parent'] = $parentId; } $wpAdminBar->add_node($args); if (!empty($menuItem->children)) { foreach ($menuItem->children as $child) { self::addNodeToAdminBar($wpAdminBar, $child, $menuItem->id); } } } /** * @return ACPT_Lite_Admin_Bar_Menu_Item[] */ public static function getMenuTree(): array { $tree = []; // Parent node $mainNode = new ACPT_Lite_Admin_Bar_Menu_Item("main", self::ACPTLogo()); // Custom post types if (Features::hasCpt()) { $cptNode = new ACPT_Lite_Admin_Bar_Menu_Item("custom-post-types", "Custom Post Types"); $cptNode->addChild(new ACPT_Lite_Admin_Bar_Menu_Item("create-custom-post-type", "Create new Custom Post Type", "register")); try { foreach (CustomPostTypeRepository::get() as $postTypeModel) { if (!$postTypeModel->isNative()) { $cptNode->addChild(new ACPT_Lite_Admin_Bar_Menu_Item($postTypeModel->getName(), $postTypeModel->getSingular(), "view/".$postTypeModel->getName())); } } } catch (\Exception $exception) { } $mainNode->addChild($cptNode); } // Taxonomies if (Features::hasTax()) { $taxNode = new ACPT_Lite_Admin_Bar_Menu_Item("taxonomies", "Taxonomies", "taxonomies"); $taxNode->addChild(new ACPT_Lite_Admin_Bar_Menu_Item("register-taxonomy", "Create new Taxonomy", "register_taxonomy")); try { foreach (TaxonomyRepository::get() as $taxonomyModel) { if (!$taxonomyModel->isNative()) { $taxNode->addChild(new ACPT_Lite_Admin_Bar_Menu_Item($taxonomyModel->getSlug(), $taxonomyModel->getSingular(), "view_taxonomy/".$taxonomyModel->getSlug())); } } } catch (\Exception $exception) { } $mainNode->addChild($taxNode); } // Field groups if (Features::hasMeta()) { $metaNode = new ACPT_Lite_Admin_Bar_Menu_Item("meta", "Field groups", "meta"); $metaNode->addChild(new ACPT_Lite_Admin_Bar_Menu_Item("register-meta", "Create new Meta group", "register_meta")); try { foreach (MetaRepository::get([]) as $metaGroupModel) { $metaNode->addChild(new ACPT_Lite_Admin_Bar_Menu_Item("meta-".$metaGroupModel->getId(), Translator::translate("Edit") . " ". $metaGroupModel->getUIName(), "edit_meta/".$metaGroupModel->getId())); } } catch (\Exception $exception) { } $mainNode->addChild($metaNode); } // Settings $mainNode->addChild(new ACPT_Lite_Admin_Bar_Menu_Item("settings", "Settings", "settings")); $tree[] = $mainNode; return $tree; } /** * @return string */ private static function ACPTLogo(): string { return ' ACPT '; } }