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

0 / 5 好评 5

Your page rank:

大家好,我是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做了调整,整体架构类似某宝的折叠菜单,总之万变不离其宗,喜欢折腾的大家可以去尝试下!

提交需求表单



    你可能会感兴趣

    • 导航站前端DEMO
      推荐

      如何利用WP原生链接功能实现轻量化导航站页面?

      大家好,我是Funion数字营销实战派飞小优,有很多企业主在后期网站运营不错后需要添加导航站功能,很多人想直接采用第三方的导航站主题来实现,这个办法固然很好,但是从你运营的站点及SEO还有后期运营项目的情况来看,能尽量少开启一个后台就少开一个,毕竟没那么多运营人员和技术来维护,所以作为过来人,我教你一个轻量化实现导航站方案——原生链接功能实现导航站需求。 具体实现方案逻辑 主要是采用页面模板来进行构造代码实现,WP原生支持页面和文章等模板,因此我们可以利用这个原生功能来最小化方案实现。因为从后期…

      营销实战 2025年 10月 27日
    • 百度智能体怎么申请?

      百度智能体怎么申请?

      在人工智能浪潮席卷全球的今天,百度智能体作为百度公司推出的智能交互平台,正逐渐改变人们的工作和生活方式。本文将为您详细解析申请百度智能体的完整流程,帮助您顺利开启智能体验之旅。 申请前的准备工作 在开始申请之前,您需要确保已完成以下准备:首先,注册并登录百度账号,这是使用所有百度服务的基础。若尚未拥有账号,可访问百度官网免费注册。其次,建议提前准备好个人或企业相关信息,包括联系方式、使用场景说明等,这些信息可能在申请过程中需要填写。最后,确保您的网络环境稳定,以便顺利完成在线申请流程。 具体申请…

      营销实战 2025年 9月 19日
    • 如何通过意图数据提升产品营销策略?深度解析五大实战技巧

      如何通过意图数据提升产品营销策略?深度解析五大实战技巧

      说到产品营销,很多人的第一反应是用户画像、市场调研、渠道投放等传统方式。但如今,数字时代的到来使得用户行为数据成为营销决策的核心依据之一,而意图数据(Intent Data)更是其中的“富矿”。然而,不少营销人对意图数据的理解仍停留在“用户搜索了什么关键词”的层面,却忽略了如何系统性地收集、分析并应用这些数据。 在这篇文章中,我将从意图数据的定义和分类说起,逐步深入探讨其核心价值,并分享一些实操技巧,帮助大家制定更精准、高效的产品营销策略。如果你是营销从业者,或是希望提升产品推广效果的同学,建议…

      营销实战 2025年 9月 2日
    • wordpress图库怎么分类?
      推荐

      wordpress图库怎么分类?

      本文详细介绍了如何在WordPress中对图库进行专业分类管理,包括了解WordPress图库基础、使用原生分类方法、启用媒体分类功能、安装专用插件、创建多级分类结构、实现批量编辑、创建智能筛选规则、使用可视化文件夹管理和使用条件筛选器等技巧。同时,还推荐了一些专业图库解决方案。
      希望这个总结符合您的要求。

      营销实战 2025年 8月 29日
    • 如何给文章添加热门、新、推荐、特价的标签图标?
      推荐

      如何给文章添加热门、新、推荐、特价的标签图标?

      大家好,我是FUNION数字营销实战派飞小优,不久前出过一篇关于《wordpress第三方主题中原生文章后台的置顶和前端显示文章置顶为什么是不一样的?如何实现通过勾选后台置顶后前台文章也显示置顶小图标?》,今天也同样跟大家介绍如何实现给文章添加热门、新、推荐、特价的标签图标,先看下具体的前端DEMO。 解决方案 整体来讲,实现该功能不难,只需要依赖ACF插件,创建一个自定义字段即可搞定,考虑到很多人都是小白,我将实现步骤介绍给大家。 具体实现步骤 先安装ACF插件,后台可以搜索关键词然后直接安装…

      营销实战 2025年 8月 23日
    • 置顶图标前端实现
      推荐

      wordpress第三方主题中原生文章后台的置顶和前端显示文章置顶为什么是不一样的?如何实现通过勾选后台置顶后前台文章也显示置顶小图标?

      大家好,我是FUNION数字营销实战派飞小优,今天又有同学问我关于“WordPress第三方主题原生置顶功能与前端显示不一致的问题”,该问题的核心原因在于主题模板未正确调用置顶判断函数或缺少对应的样式定义。关于该问题之前已经写过一篇文章《WP置顶图标实现》对此,给出以下是分步解决方案: 问题根源分析 1.原生置顶机制WordPress通过is_sticky()函数判断文章是否置顶,但需在模板中主动调用。 2.主题模板差异第三方主题可能未在文章列表/分类页模板中插入置顶判断逻辑,导致即使后台勾选置…

      营销实战 2025年 8月 22日
    • GEO、 AEO和SEO:2025年AI营销的全系标配
      热门

      GEO、 AEO和SEO:2025年AI营销的全系标配

      大家好,我是Funion数字营销实战派飞小优,如果说2025年搜索引擎优化市场中有一个新规,无疑是 GEO、AEO、AISEO了。想象一下,目前只要做好这其中一个,那企业的流量会源源不断。因此,企业一定要做好紧跟时代步伐,调整数字营销策略方案。而Gartner预测,到2025年底,AI将驱动80%的全球数字营销策略。 未来正在加速到来,企业必须适应。语音搜索现在已占据50%的在线查询,像ChatGPT这样的工具正在飞速发展。传统的搜索引擎优化(SEO)已不再足够,现在它需要与答案引擎优化(AEO…

      营销实战 2025年 8月 1日
    • 网站开发需求表制作指南:从零到一的专业文档撰写

      网站开发需求表制作指南:从零到一的专业文档撰写

      为何需要完善的网站开发需求表 网站开发需求表是整个项目开发的基石文档,它不仅明确了项目目标和技术要求,更是团队协作的核心依据。一份优秀的网站需求表能够显著提升开发效率,减少沟通成本,避免项目偏离预期。 从SEO角度看,制定详细的开发需求表有助于确保网站架构和代码结构符合搜索引擎友好性原则。例如,通过需求表明确要求开发团队实现合理的URL结构、规范的HTML标记、响应式设计和页面加载速度优化等要素,这对后期SEO工作至关重要。 网站开发需求表的核心组成部分 项目概述与背景信息 项目背景和商业目标是…

      营销实战 2025年 6月 18日
    • 2024年最佳WordPress知识文档主题推荐与SEO优化全攻略

      2024年最佳WordPress知识文档主题推荐与SEO优化全攻略

      为什么需要专业的知识文档主题 对于企业网站和技术博客而言,传统主题往往无法满足知识库管理的专业需求。专业的文档主题提供分类层级管理、搜索增强、用户反馈收集等核心功能,能显著改善用户体验和内容发现率。 知识文档主题通过优化内部链接结构和分类体系,能够建立更强大的SEO架构。Google的研究表明,良好的信息架构可以提升40%以上的页面收录率。许多成功的独立站案例都证明,专业的文档系统能带来更长的页面停留时间和更低的跳出率。 从技术角度看,优质文档主题会针对静态内容做特别优化,包括预加载、缓存策略和…

      营销实战 2025年 6月 16日
    • WordPress文章页面模板功能实现指南

      WordPress文章页面模板功能实现指南

      模板功能的强大之处 在WordPress这个全球最受欢迎的内容管理系统中,模板功能为网站设计带来了极大的灵活性。通过创建和使用不同的文章模板,您可以轻松实现多种页面布局样式,满足不同类型内容的展示需求。 WordPress模板系统最令人惊叹的地方在于它允许非技术用户也能创建专业级的网页设计,无需从头编写代码。后台提供的视觉化编辑器与模板功能的结合,让个性化设计变得前所未有的简单。 创建自定义模板的基础步骤 高级模板定制技巧 对于更专业的实现,您可以利用以下高级功能: 一个典型的专业级模板可能包含…

      营销实战 2025年 6月 12日
    售前
    微信

    扫码了解更多服务

    qr

    1对1专家沟通

    小程序

    扫码体验小程序

    funion_xcx

    您70%的潜在客户正在Deepseek/KIMI/豆包/ChatGPT中流失——抢占AI搜索第一推荐位,今日上线! 生成式引擎优化(GEO)服务首发|让企业官网成为AI机器人的「首选答案供应商」                          👉 了解GEO服务