You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现WordPress子菜单每4个<li>标签自动换行

解决WordPress子菜单每4个分组换行的问题

我来帮你搞定这个菜单分组换行的需求!核心思路是给目标子菜单项加个计数器,每输出4个就闭合当前的菜单容器并重新开启一个,这样前端就能按照4个一组的方式换行显示了。

修改后的完整PHP代码

<ul class="rd-navbar-nav">
<?php $count = 0; $submenu = false; foreach( $menuitems as $item ): $link = $item->url; $title = $item->title; // item does not have a parent so menu_item_parent equals 0 (false) if ( !$item->menu_item_parent ): // save this id for later comparison with sub-menu items $parent_id = $item->ID; ?>
<li>
<a href="<?php echo $link; ?>" class="title">
<?php echo $title; ?>
</a>
<?php endif; ?>
<?php if ( $parent_id == $item->menu_item_parent ): ?>
<?php if ( !$submenu ): $submenu = true; $sub_item_count = 0; // 初始化子菜单项计数器 ?>
<ul class="rd-navbar-megamenu">
<?php endif; ?>
<li>
<ul class="rd-megamenu-list">
<a href="<?php echo $link; ?>" class="title"><?php echo $item->title; ?></a>
</ul>
</li>
<?php $sub_item_count++; // 每输出一个子项,计数器加1 ?>
<?php 
// 检查是否达到4个,且下一个item仍属于当前父菜单,触发换行
if ($sub_item_count % 4 == 0 && isset($menuitems[$count+1]) && $menuitems[$count+1]->menu_item_parent == $parent_id): 
?>
</ul><!-- 关闭当前行的菜单容器 -->
<ul class="rd-navbar-megamenu"><!-- 开启新行的菜单容器 -->
<?php endif; ?>
<?php if ( $menuitems[ $count + 1 ]->menu_item_parent != $parent_id && $submenu ): ?>
</ul>
<?php $submenu = false; endif; ?>
<?php endif; ?>
<?php if ( $menuitems[ $count + 1 ]->menu_item_parent != $parent_id ): ?>
</li>
<?php $submenu = false; endif; ?>
<?php $count++; endforeach; ?>
</ul>

关键修改点说明

  • 初始化计数器:在第一次打开rd-navbar-megamenu容器时,新增$sub_item_count = 0;,用于统计当前组内的子菜单项数量。
  • 递增计数器:每输出一个目标<li><ul class="rd-megamenu-list">...</ul></li>标签后,执行$sub_item_count++;更新计数。
  • 触发换行逻辑:当计数器是4的倍数,且下一个菜单项仍属于当前父菜单时,闭合当前的rd-navbar-megamenu容器,同时开启一个新的容器,实现分组换行。

修改后生成的HTML示例(以"Ostali proizvodi"菜单为例)

<li>
<a href="http://localhost:8080/company/ostali-proizvodi/" class="title"> Ostali proizvodi </a>
<ul class="rd-navbar-megamenu">
<li>
<ul class="rd-megamenu-list">
<a href="http://localhost:8080/company/profilisani-limovi/" class="title">Profilisani limovi</a>
</ul>
</li>
<li>
<ul class="rd-megamenu-list">
<a href="http://localhost:8080/company/profilisani-limovi/" class="title">Vijčana roba</a>
</ul>
</li>
<li>
<ul class="rd-megamenu-list">
<a href="http://localhost:8080/company/profilisani-limovi/" class="title">Komunalna oprema</a>
</ul>
</li>
<li>
<ul class="rd-megamenu-list">
<a href="http://localhost:8080/company/profilisani-limovi/" class="title">Profili za suhu gradnju</a>
</ul>
</li>
</ul>
<ul class="rd-navbar-megamenu">
<li>
<ul class="rd-megamenu-list">
<a href="http://localhost:8080/company/profilisani-limovi/" class="title">Ostali</a>
</ul>
</li>
</ul>
</li>

这样你的子菜单就会自动按4个一组拆分到不同的rd-navbar-megamenu容器中,前端只需要保证这个容器是块级显示(或者用flex等布局),就能实现每4个换行的效果啦!

内容的提问来源于stack exchange,提问作者Mu Lem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:22:55