WordPress教程

获取 WordPress 菜单树形结构数组自定义万能菜单

也想出现在这里?联系我们
创客云

虽然 wordpress 提供了 wp_nav_menu 方法来输出菜单,但是如果你想实现超级菜单(Mega Menu),单靠它就做不到了。

好在有 wp_get_nav_menu_object 和 wp_get_nav_menu_items 这两个菜单接口,可以先取得扁平化的菜单数组,然后稍稍加工一下就能得到树形结构的菜单数组了。

也想出现在这里?联系我们
创客主机
  1. function get_nav_menu_tree( $location ) {
  2. 	$locations = get_nav_menu_locations();
  3. 	$menu_id = $locations[$location] ;
  4. 	$menu_object = wp_get_nav_menu_object($menu_id);
  5. 	$menu_items = wp_get_nav_menu_items($menu_object->term_id);
  6.  
  7. 	_wp_menu_item_classes_by_context($menu_items);
  8.  
  9. 	$menu = array();
  10. 	$submenus = array();
  11.  
  12. 	foreach ($menu_items as $m) {
  13. 		$m->children = array();
  14.  
  15. 		if (!$m->menu_item_parent) {
  16. 			$menu[$m->ID] = $m;
  17. 		} else {
  18. 			$submenus[$m->ID] = $m;
  19.  
  20. 			if (isset($menu[$m->menu_item_parent])) {
  21. 				$menu[$m->menu_item_parent]->children[$m->ID] = &$submenus[$m->ID];
  22. 			} else {
  23. 				$submenus[$m->menu_item_parent]->children[$m->ID] = $submenus[$m->ID];
  24. 			}
  25. 		}
  26. 	}
  27.  
  28. 	return $menu;
  29. }

调用方法:

  1. <?php echo get_nav_menu_tree( 菜单名称 ) ?>

这样就可以输出整个菜单的对象,自己 var_dump() 即可查看全部菜单结构,自己循环遍历输出即可。

本文由 云模板 作者:PetitQ 发表,转载请注明来源!

也想出现在这里?联系我们
创客主机

热评文章

发表评论

热销模板

Nastik - 创意企业作品展示网站WordPress汉化模板

Envato

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!

12

12.12 惠不可挡

每逢双12,难免心潮澎湃,亲们,准备好了吗?

①、原版主题安装冬日暖心价60元/次(原价120元/次) ---》详询客服

①、云主机买一年送一年,买两年送两年,高速、稳定、免备案 ---》云主机

③、双十二限时促销,在模板市场购买任意模板赠送VIP年度会员火热进行中 ---》云模板

咨 询 客 服