$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
';
}
}