您的浏览器需要启用 JavaScript 才能正常访问此网站。
萨龙网络
登录
首页-WordPress文章-WordPress-正文

WordPress+Nuxt3前后端分离项目,实现不限层级的多维数组菜单

萨龙龙萨龙龙WordPress3年前213.72W

使用 WordPress+Nuxt3做前后端分离项目时,菜单需要多维数组,且不限层级,可以使用递归函数很方便地将 wp_get_nav_menu_items 返回的对象数组转换为多维数组,实现不限层级的转换。

/**
 * 输出菜单为多维数组
 * 不限层级
 *
 * @param [type] $items
 * @param integer $parent_id
 * @return void
 * @DateTime 2023-04-25
 * @Author 萨龙龙 @ admin@salongweb.com
 * @copyright 萨龙网络:https://api.salongweb.com
 * @version 1.0
 */
function salong_convert_menu_items_to_array($items, $parent_id = 0)
{
    $menu_items = array();

    foreach ($items as $item) {
        if ((int) $item->menu_item_parent === $parent_id) {
            $menu_item = array(
                'id'       => $item->ID,
                'title'    => $item->title,
                'url'      => $item->url,
                'children' => array(),
            );

            $children = salong_convert_menu_items_to_array($items, $item->ID);

            if (!empty($children)) {
                $menu_item['children'] = $children;
            }

            $menu_items[] = $menu_item;
        }
    }

    return $menu_items;
}


$menu_locations   = get_nav_menu_locations();                         // 获取换所有菜单项
$header_menu_id   = $menu_locations['header-menu'];                   // 头部菜单 ID
$menu_items       = wp_get_nav_menu_items($header_menu_id);
$menu_items_array = salong_convert_menu_items_to_array($menu_items);

print_r($menu_items_array);
标签:
本文原创,作者:萨龙龙,其版权均为萨龙网络所有。
如需转载,请注明出处:https://salongweb.com/wordpress-nuxt3-menu-multidimensional-arrays.html
萨龙龙

萨龙龙

侠客
一个平平常常的人,热爱生活、旅行和摄影,骑行去过西藏,一直计划再去。14年从江西骑行来到大理,现栖居于洱海边,食人间烟火,过简单生活,做简约设计!
1412.38M457.18W4.42W
加载中…
分享:
WordPress 使用 wp_set_password 重置用户密码
WordPress 使用 wp_set_password 重置用户密码上一篇
WordPress+Nuxt.js+Vue.js开发的前端node项目被停止的处理方案下一篇
WordPress+Nuxt.js+Vue.js开发的前端node项目被停止的处理方案
相关文章
总数:114

wordpress自定义域函数get_post_custom_values多个值循环

自定义域在Wordpress中有着相当重的份量,很多功能都可以在其中实现,最近有朋友要萨龙龙添加两个功能,一是缩略图使用自定义域来获取(支持外链…
萨龙龙萨龙龙WordPress10年前001.13W0

CSS3 background-attachment:fixed实现滚动视差效果

一直都想设计一个有滚动视差效果的主题,而网上所有的介绍和有视差效果的主题都是使用jQuery来实现,而且由于视差背景图是一张满屏的大小,所以一直…
萨龙龙萨龙龙WordPress10年前001.57W0

WordPress 功能函数——absint(将值转换为非负整数)

用法 absint( mixed $maybeint ) 将值转换为非负整数。 参数 $maybeint (mixed)(必需)您希望…
萨龙龙萨龙龙WordPress Functions7年前001.17W0

WordPress Mega超级大菜单插件Ubermenu

Ubermenu是一个用户友好的、可高度定制响应式的Wordpress超级大菜单插件,工作原理与Wordpress 3菜单系统类似,强大到可创建…
萨龙龙萨龙龙WordPress11年前001.77W0

WordPress MU多站点网络共享媒体插件Network Shared Media的使用包括特色图像

WordPress MU虽然是一个程序下可以创建多个站点,但每个站点下的文章、页面、媒体等还是独立的,MU也为不同的站点分配了不同的媒体目录。N…
萨龙龙萨龙龙WordPress11年前001.91W0

WordPress MU多站点设置子站点上传路径和文件的URL地址

为了提高网站的访问速度,萨龙网络也将所有的媒体文件放置在二级域名下,WordPress 3.5以上的版本,隐藏了后台的媒体(Media)设置页面…
萨龙龙萨龙龙WordPress10年前001.63W0

WooCommerce 通过woocommerce_cart_item_thumbnail钩子修改购物车缩略图

在开发基于 WooCommerce 的商城主题时,我们一般会将模板文件添加到主题中来进行修改,对于有钩子或接口的地方,就没有必要再修改模板代码了…
萨龙龙萨龙龙WooCommerce6年前001.71W0

Nuxt.js Headless WordPress 项目中的数据缓存优化策略

在 Headless WordPress + Nuxt.js 的架构中,WordPress 作为内容后端通过 REST API 提供数据,Nux…
萨龙龙萨龙龙WordPress23天前002130

WordPress 主题 MNews Pro 5.2 投稿新增可插入音视频功能

MNews Pro 主题已经更新到5.2版本,功能已经很完善,且实用,在文章投稿编辑器有用户提出不能上传视频或者插入视频简码不方便的问题。 …
萨龙龙萨龙龙WordPress3年前002.67W0

删除或失效WordPress文章中的图像大小属性

默认情况下,WordPress会将图像元素width和height属性添加到图像元素中。这些属性会影响CSS宽度和高度属性,图片延迟加载时默认图…
萨龙龙萨龙龙WordPress, 前端资讯7年前001.22W0

Nuxt 3 项目中集成 AI API 实现智能内容生成与多语言翻译

随着大语言模型(LLM)技术的飞速发展,越来越多的 Web 应用开始集成 AI 能力——从智能客服、内容摘要到自动翻译,AI 正在重塑前端开发的…
萨龙龙萨龙龙WordPress25天前006310

WordPress MU多站点网络克隆新站点插件Multisite Cloner

Wordpress MU多站点已经使用很久,在本地测试和主机上安装的都是多站点,极大的方便网站搭建以及主题开发。当我们有多个站点,需要创建的新站…
萨龙龙萨龙龙WordPress10年前002.07W0
评论表单游客 您好,欢迎参与讨论。
加载中…
评论列表
总数:0
萨龙网络
没有相关内容