v2.0.0: add includes/Tools/MenuTools.php
This commit is contained in:
@@ -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']];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user