我正在尝试使用Wordpress上的Tags / taxonomy在Wordpress中构建一个类似于以下HTML的菜单
期望输出
<ul id="menu-navigation">
<li class="no-menu"><a href="">Tag 1</a></li>
<li class="no-menu"><a href="">Tag 2</a></li>
<li class="no-menu"><a href="">Tag 3</a></li>
<li class="no-menu"><a href="">Tag 4</a></li>
<li><a href="">More <span class="arrow">▾</span></a>
<ul>
<li><a href="">tag 5</a></li>
<li><a href="">tag 6</a></li>
<li><a href="">tag 7</a></li>
<li><a href="">tag 8</a></li>
</ul>
</li>
</ul>
假设我获得了一个包含20个标签的列表,作为array()
目标是上面的HTML输出,请注意..
<li>
标签More
并且<span class="arrow">▾</span>
以及新<ul>
<li>
标签中,但它们将位于子菜单下到目前为止,我把它放在一起几乎可以给我所需的输出......
<?php
$posttags = array('tag 1', 'tag 2', 'tag 3', 'tag 4', 'tag 5', 'tag 6', 'tag 7',
'tag 8', 'tag 9', 'tag 10', 'tag 11', 'tag 12', 'tag 13', 'tag 14', 'tag 15',
'tag 16', 'tag 17', 'tag 18', 'tag 19', 'tag 20');
$count = 0;
if ($posttags) {
echo '<ul id="menu-navigation">';
foreach ($posttags as $tag) {
$count++;
// If count less then 5 we show the first 4 tags as top level links
if ($count < 5) {
echo '<li class="no-menu"><a href="">' . $tag . '</a></li>';
}
// The 5th top level link/menu item will be the More link and begin our Sub-menu
if ($count == 5) {
echo '<li><a href="">More <span class="arrow">▾</span></a>';
echo '<ul>';
}
echo '<li class="no-menu"><a href="">' . $tag . '</a></li>';
}
echo '</ul>';
echo '</li>';
echo '</ul>';
}
这几乎可以帮助我...
<ul id="menu-navigation">
<li class="no-menu"><a href="">tag 1</a></li>
<li class="no-menu"><a href="">tag 1</a></li>
<li class="no-menu"><a href="">tag 2</a></li>
<li class="no-menu"><a href="">tag 2</a></li>
<li class="no-menu"><a href="">tag 3</a></li>
<li class="no-menu"><a href="">tag 3</a></li>
<li class="no-menu"><a href="">tag 4</a></li>
<li class="no-menu"><a href="">tag 4</a></li>
<li><a href="">More <span class="arrow">?</span></a>
<ul>
<li class="no-menu"><a href="">tag 5</a></li>
<li class="no-menu"><a href="">tag 6</a></li>
<li class="no-menu"><a href="">tag 7</a></li>
<li class="no-menu"><a href="">tag 8</a></li>
<li class="no-menu"><a href="">tag 9</a></li>
<li class="no-menu"><a href="">tag 10</a></li>
<li class="no-menu"><a href="">tag 11</a></li>
<li class="no-menu"><a href="">tag 12</a></li>
<li class="no-menu"><a href="">tag 13</a></li>
<li class="no-menu"><a href="">tag 14</a></li>
<li class="no-menu"><a href="">tag 15</a></li>
<li class="no-menu"><a href="">tag 16</a></li>
<li class="no-menu"><a href="">tag 17</a></li>
<li class="no-menu"><a href="">tag 18</a></li>
<li class="no-menu"><a href="">tag 19</a></li>
<li class="no-menu"><a href="">tag 20</a></li>
</ul>
</li>
</ul>
请帮助我纠正这个问题,如果你知道更好的方法,我也很乐意,感谢任何帮助,提前谢谢
答案 0 :(得分:4)
你需要包装你的决赛:
echo '<li class="no-menu"><a href="">' . $tag . '</a></li>';
在:
if($count > 5) { }
或者,你可以把:
continue;
在两个if语句的末尾。
答案 1 :(得分:1)
您在li
时打印$count<4
,并且在每次迭代结束时,只打印一次就足够了。这应该可以解决问题:
$count = 0;
if (is_array($posttags)) {
echo '<ul id="menu-navigation">';
foreach ($posttags as $tag) {
$count++;
// The 5th top level link/menu item will be the More link and begin our Sub-menu
if ($count == 5) {
echo ' <li><a href="">More <span class="arrow">▾</span></a>';
echo ' <ul>';
} // Fix indentation for the items in the sub-menu
if($count > 4) {
echo ' ';
}
echo ' <li class="no-menu"><a href="">' . $tag . '</a></li>';
}
if (count($posttags) > 4) {
echo ' </ul>';
echo ' </li>';
echo '</ul>';
}
}