如何通过RESTAPI访问wordpress菜单项?
我想在另一个web应用程序中显示Wordpress的主菜单项。因此,我需要RESTAPI中公开的如何通过RESTAPI访问wordpress菜单项?,wordpress,wordpress-rest-api,Wordpress,Wordpress Rest Api,我想在另一个web应用程序中显示Wordpress的主菜单项。因此,我需要RESTAPI中公开的wp_nav_menu的内容 是否有通过API访问菜单结构的标准方法?如果没有,是否有涵盖此功能的最新插件?谷歌只提出了过时的解决方案。第一步:安装WP-REST-APIv2菜单 第二步: 域名/wp json/menus/v1/每个注册菜单的菜单列表。 特定菜单的域名/wp-json/menus/v1/menus/slug数据。如何。您可以使用此路径访问“主”菜单-> 并确保使用注册导航菜单()
wp_nav_menu
的内容
是否有通过API访问菜单结构的标准方法?如果没有,是否有涵盖此功能的最新插件?谷歌只提出了过时的解决方案。第一步:安装WP-REST-APIv2菜单 第二步: 域名/wp json/menus/v1/每个注册菜单的菜单列表。
特定菜单的域名/wp-json/menus/v1/menus/slug数据。如何。您可以使用此路径访问“主”菜单-> 并确保使用注册导航菜单()中的主菜单。 在functions.php的WP主题中,我有这些行。('menu-1'是我的主菜单) 在此行中添加此“菜单-1” ==>$menuID=$menuLocations['menu-1']强>
//https://developer.wordpress.org/reference/functions/wp_get_nav_menu_items/
function wp_menu_route() {
// register_nav_menus( array(
// 'menu-1' => esc_html__( 'Primary', 'text-domain' ),
// ) );
// using register_nav_menus primary menu name -> 'menu-1'
$menuLocations = get_nav_menu_locations(); // Get nav locations set in theme, usually functions.php)
// returns an array of menu locations ([LOCATION_NAME] = MENU_ID);
$menuID = $menuLocations['menu-1']; // Get the *primary* menu added in register_nav_menus()
$primaryNav = wp_get_nav_menu_items($menuID); // Get the array of wp objects, the nav items for our queried location.
return $primaryNav;
}
add_action( 'rest_api_init', function () {
//https://your-wp-domain-url.com/wp-json/custom-name/menu
register_rest_route( 'custom-name', '/menu', array(
'methods' => 'GET',
'callback' => 'wp_menu_route',
) );
} );
受baymax建议的启发,我创建了以下两个函数,因此既可以获取所有可用菜单,也可以检索有关单个菜单的信息 这里有两个函数可用于将菜单添加到RESTAPI和检索单个菜单项
这使我们能够同时访问两个:
和
功能wp_菜单_路线(){
$menuLocations=get_nav_menu_locations();//在主题中设置导航位置,通常是functions.php)
返回$MENULOTIONS;
}
添加操作('rest\u api\u init',函数(){
注册\u rest\u路由('custom','/menu/',数组(
'方法'=>'获取',
“回调”=>“wp\U菜单\U路由”,
) );
} );
功能wp\u菜单单($data){
$menuID=$data['id'];//从id获取菜单
$primaryNav=wp_get_nav_menu_items($menuID);//获取wp对象数组,即查询位置的导航项。
返回$primaryNav;
}
添加操作('rest\u api\u init',函数(){
注册rest路由('自定义','/menu/(?P\d+),数组(
'方法'=>'获取',
“回调”=>“可湿性粉剂菜单单”,
) );
} );
我安装了这个插件,但是我得到了一个404,上面有{“code”:“rest\u no\u route”}。你运行哪个URL?确保它是…/wp json/menus/v1/menus
//https://developer.wordpress.org/reference/functions/wp_get_nav_menu_items/
function wp_menu_route() {
// register_nav_menus( array(
// 'menu-1' => esc_html__( 'Primary', 'text-domain' ),
// ) );
// using register_nav_menus primary menu name -> 'menu-1'
$menuLocations = get_nav_menu_locations(); // Get nav locations set in theme, usually functions.php)
// returns an array of menu locations ([LOCATION_NAME] = MENU_ID);
$menuID = $menuLocations['menu-1']; // Get the *primary* menu added in register_nav_menus()
$primaryNav = wp_get_nav_menu_items($menuID); // Get the array of wp objects, the nav items for our queried location.
return $primaryNav;
}
add_action( 'rest_api_init', function () {
//https://your-wp-domain-url.com/wp-json/custom-name/menu
register_rest_route( 'custom-name', '/menu', array(
'methods' => 'GET',
'callback' => 'wp_menu_route',
) );
} );
function wp_menu_route() {
$menuLocations = get_nav_menu_locations(); // Get nav locations set in theme, usually functions.php)
return $menuLocations;
}
add_action( 'rest_api_init', function () {
register_rest_route( 'custom', '/menu/', array(
'methods' => 'GET',
'callback' => 'wp_menu_route',
) );
} );
function wp_menu_single($data) {
$menuID = $data['id']; // Get the menu from the ID
$primaryNav = wp_get_nav_menu_items($menuID); // Get the array of wp objects, the nav items for our queried location.
return $primaryNav;
}
add_action( 'rest_api_init', function () {
register_rest_route( 'custom', '/menu/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'wp_menu_single',
) );
} );