v2.0.0: add includes/Tools/MenuTools.php

This commit is contained in:
2026-05-29 10:40:05 +00:00
parent 8fbe0c6f04
commit 160d4ecc6c
+24
View File
@@ -0,0 +1,24 @@
<?php
namespace AskTamMCP\Tools;
defined('ABSPATH') || exit;
class MenuTools {
public static function listMenus(array $args): array {
$menus = wp_get_nav_menus();
return ['menus'=>array_map(fn($m)=>['id'=>$m->term_id,'name'=>$m->name,'slug'=>$m->slug,'count'=>$m->count],$menus)];
}
public static function getMenu(array $args): array {
$items = wp_get_nav_menu_items($args['menu']);
if (!$items) throw new \RuntimeException("Menu not found or empty: {$args['menu']}");
return ['items'=>array_map(fn($i)=>['id'=>$i->ID,'title'=>$i->title,'url'=>$i->url,'parent'=>(int)$i->menu_item_parent,'order'=>(int)$i->menu_order,'type'=>$i->type,'object'=>$i->object,'object_id'=>(int)$i->object_id],$items)];
}
public static function updateMenuItem(array $args): array {
$data = ['menu-item-title'=>$args['title'],'menu-item-url'=>$args['url'],'menu-item-status'=>'publish'];
if (!empty($args['parent'])) $data['menu-item-parent-id'] = (int)$args['parent'];
if (!empty($args['position'])) $data['menu-item-position'] = (int)$args['position'];
$item_id = !empty($args['item_id']) ? (int)$args['item_id'] : 0;
$id = wp_update_nav_menu_item($args['menu'], $item_id, $data);
if (is_wp_error($id)) throw new \RuntimeException($id->get_error_message());
return ['id'=>$id,'menu'=>$args['menu']];
}
}