最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

functions - retrieves menu and converts it to a readable array

programmeradmin0浏览0评论

I have added this code in function.php to retrieves menu and converts it to a readable array but It's not working and give me this warning. Warning : Invalid argument supplied for foreach() in C:\xampp\htdocs\Upwork\wp-content\themes\truckloanhub\functions.php on line 117

Warning : Invalid argument supplied for foreach() in C:\xampp\htdocs\Upwork\wp-content\themes\truckloanhub\functions.php on line 127

function wp_get_menu_array($current_menu) {



$array_menu = wp_get_nav_menu_items($current_menu);
   $menu = array();
   foreach ($array_menu as $m) {
       if (empty($m->menu_item_parent)) {
           $menu[$m->ID] = array();
           $menu[$m->ID]['ID']      =   $m->ID;
           $menu[$m->ID]['title']       =   $m->title;
           $menu[$m->ID]['url']         =   $m->url;
           $menu[$m->ID]['children']    =   array();
       }
   }
   $submenu = array();
   foreach ($array_menu as $m) {
       if ($m->menu_item_parent) {
           $submenu[$m->ID] = array();
           $submenu[$m->ID]['ID']       =   $m->ID;
           $submenu[$m->ID]['title']    =   $m->title;
           $submenu[$m->ID]['url']  =   $m->url;
           $menu[$m->menu_item_parent]['children'][$m->ID] = $submenu[$m->ID];
       }
   }
   return $menu;

}

I have added this code in function.php to retrieves menu and converts it to a readable array but It's not working and give me this warning. Warning : Invalid argument supplied for foreach() in C:\xampp\htdocs\Upwork\wp-content\themes\truckloanhub\functions.php on line 117

Warning : Invalid argument supplied for foreach() in C:\xampp\htdocs\Upwork\wp-content\themes\truckloanhub\functions.php on line 127

function wp_get_menu_array($current_menu) {



$array_menu = wp_get_nav_menu_items($current_menu);
   $menu = array();
   foreach ($array_menu as $m) {
       if (empty($m->menu_item_parent)) {
           $menu[$m->ID] = array();
           $menu[$m->ID]['ID']      =   $m->ID;
           $menu[$m->ID]['title']       =   $m->title;
           $menu[$m->ID]['url']         =   $m->url;
           $menu[$m->ID]['children']    =   array();
       }
   }
   $submenu = array();
   foreach ($array_menu as $m) {
       if ($m->menu_item_parent) {
           $submenu[$m->ID] = array();
           $submenu[$m->ID]['ID']       =   $m->ID;
           $submenu[$m->ID]['title']    =   $m->title;
           $submenu[$m->ID]['url']  =   $m->url;
           $menu[$m->menu_item_parent]['children'][$m->ID] = $submenu[$m->ID];
       }
   }
   return $menu;

}

Share Improve this question asked Jan 22, 2021 at 15:34 Md Shukur MiahMd Shukur Miah 11 bronze badge 1
  • $array_menu = wp_get_nav_menu_items($current_menu); may be the problem; have you run a var_dump($array_menu) to make sure you're getting what you expected? – Tony Djukic Commented Jan 23, 2021 at 3:34
Add a comment  | 

1 Answer 1

Reset to default 1

The bug is not in this snippet of code. The problem is with how you call wp_get_nav_menu_array, wherever that happens. The $current_menu is likely something invalid, so wp_get_nav_menu_items returns false, and thus you get the error that you get.

You can see in user contributed notes an example of how to get a valid value for $current_menu https://developer.wordpress/reference/functions/wp_get_nav_menu_items/#user-contributed-notes

发布评论

评论列表(0)

  1. 暂无评论