* 文章内容很有用,那就5星好评吧!😘
0 / 5 好评 5

排名:

大家好,我是Funion数字营销实战派飞小优,目前在运营网站的过程中,针对多级菜单需求有很强的刚需,具体需要输出到不同的页面中,那如何实现多层级导航菜单系统呢? 如果您的企业正计划快速搭建高转化率站点,可以参考 Funion 的 外贸独立站建站与询盘转化方案。

多层级导航菜单系统需求描述

实现一个多层级导航菜单系统,要求:

  • 支持无限层级嵌套
  • 父级菜单与子菜单样式独立控制
  • 悬停交互效果(背景色变化+文字颜色变化)

前端HTML的结构

<!-- 一级菜单 -->
<div class="nav-box-cont">
  <div class="dropdown-left-nav-box">
    <div class="dropdown-left has-children">
      <a href="#">
        <div class="dropdown-left-nav-cont"> <!-- 影响区 -->
          <img class="menu-icon" src="...">
          <span class="menu-title">主菜单</span>
        </div>
      </a>
      
      <!-- 二级菜单容器 -->
      <div class="dropdown-left-content">
        <div class="submenu">
          <!-- 二级菜单项 -->
          <div class="dropdown-left-nav-cont"> <!-- 独立区 -->
            <!-- 可继续嵌套三级 -->
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

参考前端案例

前端参考的是某宝的这种,当然我们需要在基础结构上做差异化处理

WP实现一个层级折叠菜单功能扩展支持无线层级嵌套解决方案实操

实现方案思路

采用WP的原生Menu Walker类来实现。关于 WordPress 中的 Walker 类,这是一个非常重要的核心概念,专门用于处理层级化数据的遍历和渲染。以下是详细的专业解释:

Walker 类核心定义

Walker 是 WordPress 提供的抽象类(位于 wp-includes/class-wp-walker.php),用于:

  • 递归处理层级数据结构(如菜单、分类、页面)
  • 提供标准化的遍历接口
  • 自定义输出 HTML 的结构

典型应用场景

应用场景对应 Walker 类功能说明
导航菜单Walker_Nav_Menu渲染 wp_nav_menu() 的输出
分类目录Walker_Category生成分类列表
页面列表Walker_Page生成 hierarchical pages
评论列表Walker_Comment嵌套评论的渲染

具体实现步骤

采用子主题进行不是,直接在子主题functions.php注册,然后写出配套的css来实现。

先注册自定义菜单实例

/**
 * 自定义下拉菜单Walker类
 */
class Custom_Dropdown_Walker extends Walker_Nav_Menu {
    public function start_lvl(&$output, $depth = 0, $args = null) {
        $output .= '<div class="dropdown-left-content"><div class="submenu">';
    }
    
    public function end_lvl(&$output, $depth = 0, $args = null) {
        $output .= '</div></div>';
    }
    
    public function start_el(&$output, $item, $depth = 0, $args = null, $id = 0) {
        $classes = empty($item->classes) ? array() : (array) $item->classes;
        $class_names = join(' ', apply_filters('nav_menu_css_class', array_filter($classes), $item, $args, $depth));
        
        $class_names .= ' dropdown-left';
        if (in_array('menu-item-has-children', $classes)) {
            $class_names .= ' has-children';
        }
        
        $output .= "<div class='dropdown-left-nav-box'>";
        $output .= "<div class='" . esc_attr($class_names) . "'>";
        
        // 菜单项图片逻辑重构
        $image_url = get_post_meta($item->ID, '_menu_item_image_url', true);
        
        // 父级菜单结构(depth=0)
        if ($depth === 0) {
            // 显示可点击的父级菜单图片
            $output .= "<a href='" . esc_url($item->url) . "' class='dropdown-left-nav-link'>";
            if ($image_url) {
                $output .= "<div class='dropdown-left-nav-img'>";
                $output .= "<img src='" . esc_url($image_url) . "' alt='" . esc_attr($item->title) . "'>";
                $output .= "</div>";
            }
            $output .= "<div class='dropdown-left-nav-cont'>";
            $output .= "<div class='dropdown-left-nav-tit'>" . esc_html($item->title) . "</div>";
            if (!empty($item->description)) {
                $output .= "<span class='dropdown-left-text-des'>" . esc_html($item->description) . "</span>";
            }
            $output .= "</div>";
            $output .= "</a>";
        } 
        // 子菜单结构(depth>0)
        else {
            $output .= "<div class='dropdown-left-nav-cont'>";
            $output .= "<a href='" . esc_url($item->url) . "' class='submenu-item'>";
            
            // 保留子菜单左侧图片
            if ($image_url) {
                $output .= "<div class='submenu-item-left'>";
                $output .= "<img src='" . esc_url($image_url) . "' alt='" . esc_attr($item->title) . "'>";
                $output .= "</div>";
            } else {
                $output .= "<div class='submenu-item-left'>";
                $output .= "<img src='" . esc_url(get_template_directory_uri() . '/images/default-menu-icon.png') . "' alt='默认图标'>";
                $output .= "</div>";
            }
            
            $output .= "<div class='submenu-item-right'>";
            $output .= "<span class='submenu-item-title'>" . esc_html($item->title) . "</span>";
            if (!empty($item->description)) {
                $output .= "<span class='submenu-item-desc'>" . esc_html($item->description) . "</span>";
            }
            $output .= "</div>";
            $output .= "</a>";
            $output .= "</div>";
        }
    }
    
    public function end_el(&$output, $item, $depth = 0, $args = null) {
        $output .= "</div></div>";
    }
}

撰写对应css文件

css自己去摸索,每个项目不一样,因此就不贴代码,请看截图

折叠菜单的css部分内容

另外需要注意一点的是这个菜单并不是直接输出到导航位置,它是针对页面或者指定的地方输出,所以你前期需要考虑是以短码来输出还是其他的技术方式,适合自己的就好,因此你需要把这个短码输出功能也要集成到functions.php或者你的组件化目录中,最后你在以短码结构[XXX menu] 插入页面中(我这里只是讲思路,并不适合直接照搬的)因此你会看到Ui后台中菜单的基本配置,如:

菜单配置项
配置菜单字段

那最后将你的短代码输出到任意页面,比如输出到首页,如

插入短代码功能

前端验证

最后在前端查看下你的新菜单样式,如

默认折叠菜单
展开后的折叠菜单无缝对接

所以这是对多层级导航菜单系统的差异化扩展,主要是针对CSS做了调整,整体架构类似某宝的折叠菜单,总之万变不离其宗,喜欢折腾的大家可以去尝试下!

提交需求表单



    你可能会感兴趣

    • WordPress 外贸建站技术栈拆解:为什么我们不用页面构建器

      WordPress 外贸建站技术栈拆解:为什么我们不用页面构建器

      外贸建站的技术栈决定三件事:站点能跑多快、能承载多少 SKU、能被 AI 引擎读懂多少。这三件事在上线后很难改,所以选型要在开工前定。这篇拆开我们实际在用的架构。 针对询盘转化偏低的独立站,我们梳理了 以询盘为核心的外贸建站服务,从架构到转化全链路重构。 一个真实的对 同一个客户,两套方案,数据如下: 指标 拖拽构建器方案 原生 Gutenberg + ACF 方案 首页 DOM 节点数 12,400 1,860 首页 HTML 体积 780 KB 96 KB 移动端 PageSpeed 46 …

      营销实战 2026年 10月 6日
    • SaaS建站系统 vs WordPress自建独立站:2026外贸B2B选型深度对比

      SaaS建站系统 vs WordPress自建独立站:2026外贸B2B选型深度对比

      SaaS 建站系统(Shopify、Shoplazza、XShoppy 等)与 WordPress + WooCommerce 自建独立站,是外贸 B2B 的两条主流路径。中文互联网上关于两者的对比文章,绝大多数停在”SaaS 简单、WordPress 自由”这一层,对真正的决策帮助有限。 针对询盘转化偏低的独立站,我们梳理了 以询盘为核心的外贸建站服务,从架构到转化全链路重构。 真正影响选型的变量有五个:预算结构、技术人力、SEO 与内容可控度、长期迁移成本,以及 20…

      营销实战 2026年 10月 1日
    • 制造业外贸独立站:从 0 询盘到月 30 条的 6 个月节奏

      制造业外贸独立站:从 0 询盘到月 30 条的 6 个月节奏

      工厂型独立站和贸易商站点的做法完全不同。工厂的优势不是”价格低”,是工艺、产能、认证这三样贸易商拿不出来的东西——但绝大多数工厂站把它们写成了公司简介,而不是能被引擎收录的内容。 针对询盘转化偏低的独立站,我们梳理了 以询盘为核心的外贸建站服务,从架构到转化全链路重构。 工厂站最大的浪费:把硬资产写成了软文 看过不下 50 个制造业外贸站,最常见的结构是:首页放一张厂房航拍图,About Us 写”成立于 2005 年,占地面积 2 万平米,通过 ISO900…

      营销实战 2026年 9月 25日
    • 外贸建站选 Shopify 还是 WordPress:2026 年 13 项对比与决策路径

      外贸建站选 Shopify 还是 WordPress:2026 年 13 项对比与决策路径

      Shopify 和 WordPress 都能做外贸站,但适合的生意完全相反。B2C 标品跑量选 SaaS,B2B 询盘型选 WordPress。真正决定 SEO 天花板的不是功能多少,是 URL 能不能自己控制。 正在对比建站方案的企业,可以参考这份 B2B外贸独立站搭建指南,覆盖选型到上线的完整路径。 先给结论 如果你的产品是标品、SKU 少于 50 个、客户下单即付款——选 Shopify 这类 SaaS,2 周能上线,省心得多。 如果你的产品要定制、客户要先问价再谈、客单价高、决策链长——…

      营销实战 2026年 9月 23日
    • 外贸建站多少钱

      外贸建站多少钱?2026 年 5 类报价区间与 9 项隐性成本拆解

      外贸建站报价从 2,000 元到 5 万元都有,差的不是页面数量。一次性开发费只是三笔账里的第一笔,另外两笔——年度固定成本和内容投入——报价单上通常不写。本文把 5 类供应商的交付物、9 项隐性成本和真实的 2–4 周排期拆开,附 4 张对照表。 对站点速度和询盘转化有硬指标要求的企业,建议了解 WordPress外贸建站方案。 一句话回答:外贸建站 = 一次性开发费(2,000–50,000 元)+ 年度固定成本(800–4,000 元/年)+ 持续内容投入(3,000–30,000 元/月…

      营销实战 2026年 9月 18日
    • 工业品外贸建站

      工业品外贸建站怎么做?B2B 高转化独立站架构与落地拆解

      B2B 工业品外贸和消费品的出海逻辑是两件事,用同一套方法做,结果一定是一边勉强能用、一边完全没用。 正在对比建站方案的企业,可以参考这份 B2B外贸独立站搭建指南,覆盖选型到上线的完整路径。 差别在哪?一个卖消费品的站,买家看的是图片、价格、评价,决策在几分钟内完成。一个卖工业阀门或精密结构件的站,买家看的是压力等级、材质牌号、认证编号、公差范围,决策周期动辄三到六个月,中间要过工程师、采购、质量三道关。 所以工业品外贸建站的核心不是”做得好看”,是能不能让一个陌生工程…

      营销实战 2026年 9月 11日
    • 外贸建站避坑指南

      2026 外贸建站避坑指南:B2B 独立站搭建的 8 个常见误区

      先给一个不太好听的数字。制造业 B2B 网站的访客到线索转化率,行业平均值是 2.2%(First Page Sage);但如果只看”提交 RFQ 询盘”这一个动作,多数制造商网站远低于 1%。也就是说,一千个进来的人里,真正留下联系方式的不到十个。 如果您的企业正计划快速搭建高转化率站点,可以参考 Funion 的 外贸独立站建站与询盘转化方案。 这个数字基本解释了为什么那么多外贸站做完就变成摆设。不是没流量,也不是设计差,是几处关键环节在验收时没人检查、上线后没人负责…

      营销实战 2026年 9月 9日
    • 外贸建站系统选择

      外贸建站用什么系统好?WordPress vs SaaS 平台 9 维度实测对比

      如果你正在问”外贸建站用什么系统好”,大概率已经问过三家建站公司,拿到了三份报价,从八千到八万都有,说辞却差不多。这篇不重复那些说辞。选外贸建站系统这件事,我把它拆成 9 个可以当场验证的维度,每个维度给具体阈值,你拿去问任何一家服务商,看他们敢不敢答。 针对询盘转化偏低的独立站,我们梳理了 以询盘为核心的外贸建站服务,从架构到转化全链路重构。 先说我的立场,免得你读到一半才发现问题:我做的多数是 WordPress 外贸建站项目,也接过 Shopify 迁移到 Word…

      营销实战 2026年 9月 7日
    • 外贸建站服务器怎么选?2026海外主机配置清单

      外贸建站服务器怎么选?2026海外主机配置清单

      服务器是外贸建站里最容易花冤枉钱的一环,而且两个方向都常见:有客户用着 5 美元/月的共享主机,网站在美国打开要 6 秒,流量来了也留不住;也有客户一上来就买 200 美元/月的独立服务器,站点日均访客不到 500,多花的钱全在待机。选服务器其实就三件事:放哪、什么配置、带宽怎么算。 对站点速度和询盘转化有硬指标要求的企业,建议了解 WordPress外贸建站方案。 这篇按 2026 年的行情把这三件事讲透,文末有可以直接照抄的配置清单。 位置:只看客户在哪,别看你在哪 先纠正一个普遍误区。很多…

      营销实战 2026年 9月 2日
    • 外贸建站用 Shopify 还是 WordPress?从询盘转化角度说清楚

      外贸建站用 Shopify 还是 WordPress?从询盘转化角度说清楚

      “用 Shopify 还是 WordPress?”这是外贸建站领域被问得第二多的问题,排第一的是”多少钱”。网上对比这两个平台的文章很多,但大部分站在”开店”的角度比:模板好不好看、后台好不好用、付款方式接了多少。这类对比对外贸 B2B 站基本是浪费时间——因为 B2B 站的转化终点不是”下单付款”,是”留下询盘”。评价标准一换,结论全变。 对站点速度和询盘转化有硬指标要求的企…

      营销实战 2026年 8月 31日
    售前
    微信

    扫码了解更多服务

    qr

    1对1专家沟通

    小程序

    扫码体验小程序

    funion_xcx

    返回顶部