我正在为导航菜单创建一个自定义漫游器。目标是将菜单拆分为以下列:
我可以通过查看$item->menu_order
. 我不知道菜单上一共有多少项。
我怎样才能从助行器内部找到答案?
Updated:
我意识到还有其他几种创建列的方法。然而,所有这些都有其缺点:
- CSS Floats. 正如@sagive在下面所建议的,这可以通过浮动所有列表元素来实现。问题是列表的顺序改变了。列表将遍历第一行的所有四列,然后遍历第二行的所有四列,而不是向下遍历第一列,然后再遍历第二行的所有四列。这打乱了秩序。
- CSS Columns. 这几乎是完美的解决方案。它会给我想要的东西,只是我根本不想要。即使在IE 9上。这使得它无法用于主流网站。
- jQuery. 使用一些客户端javascript,我可以修改列表并使其按我想要的方式进行布局。虽然这很混乱,但对于禁用js的人来说,这很糟糕。
- PHP. 这就是我在这个问题上要问的方法。我将列表分为四个独立的无序列表,将每个列表转储到html中,然后使用CSS浮动列表以生成四个不同的列。用PHP生成可能很棘手,但对于所有浏览器,结果都是一样的。我相信这是最好的选择。
Solution:
对于那些可能会关注的人,以下是我最终用来获得答案的代码:
// The menu handle from the register_nav_menu statement in functions.php
$theme_location = \'my-menu-handle\';
$theme_locations = get_nav_menu_locations();
$menu_obj = get_term( $theme_locations[$theme_location], \'nav_menu\' );
// Echo count of items in menu
echo $menu_obj->count;
SO网友:Sagive
你不认为(如果我很粗鲁的话,请原谅)只需浮起来就简单多了吗;把所有的“li”放在一个div中,以结构背景作为图像??
示例:
<style type="text/css">
.fourPartMenu {
border: 1px solid #444;
width: 800px;
padding: 10px 15px;
}
.fourPartMenu ul {
list-style: circle; // replace with your img
padding: 0px;
margin: 0px;
}
.fourPartMenu ul li {
float: left;
width: 190px;
}
</style>
<div class="fourPartMenu">
<ul>
<li><a href="#">One</a></li>
<li><a href="#">Two</a></li>
<li><a href="#">Three</a></li>
<li><a href="#">Four</a></li>
<li><a href="#">Five</a></li>
<li><a href="#">Six</a></li>
<li><a href="#">Seven</a></li>
<li><a href="#">Eight</a></li>
<li><a href="#">Nine</a></li>
<li><a href="#">Ten</a></li>
</ul>
</div>
我认为这将更容易实施,但。。我知道,不完全是你的艰难之后,一种新的观点有时会有所帮助:)