0

我正在使用 Wordpress 创建一个自定义页面,并且需要根据标签将我的查询结果划分为列表。我知道有一个 Wordpress 堆栈交换,但这对我来说更像是一个基本的 PHP 函数。我在 Wordpress 堆栈上发现的唯一内容是根据标签名称执行新查询。

必须有更有效的方法...

我是 PHP 新手。更复杂的是,我一直在与循环作斗争,但我每天都在越来越多地掌握这个概念。

这是我想要实现的逻辑:

查询数据库并获取标记为“红、绿、蓝、黄”的帖子的“标题”。这部分我可以用WP_Query()函数来做,没有问题……麻烦的是下一部分。

循环查询和输出:

<ul id="red">
<li>Output title of first post tagged with Red</li>
<li>Output title of second post tagged with Red</li>
<li>Output title of third post tagged with Red</li>
<!--[etc...]-->
</ul>
<ul id="green">
<li>Output title of first post tagged with Greeen</li>
<li>Output title of second post tagged with Green</li>
<li>Output title of third post tagged with Green</li>
<!--[etc...]-->
</ul>
<!--[continue for other colors requested in the query]-->

结束循环

我理解第一个循环会遍历结果并输出所有记录的标题,我只是对如何循环结果并进一步除以颜色感到困惑。

任何帮助是极大的赞赏。

4

1 回答 1

0

首先,您可以对从数据库中获得的结果进行排序,只需添加一个

ORDER BY `color` // for MySql at least

如果您希望在一个循环中完成所有这些操作,那么代码会变得有些混乱。ul每次颜色更改时,您都必须存储最后一种颜色并终止+启动一个新元素。

另一个(更好的 IMO)选项是将您的元素分类到循环内的数组中,然后在循环之后,适当地回显每个数组的内容。

$colors = array();
while($row = ..FETCH_MORE_DATA_FROM_DB...){
  if (!is_array($colors[$row['color']])){ 
    $colors[$row['color']] = array(); 
  }
  $colors[$row['color']][] = "<li>{$row['title}</li>";
}

foreach($colors AS $colorName => $elements){
  echo '<ul id="'. $colorName .'">';
  foreach($elements AS $element){
    echo $element;
  }
  echo '</ul>';
}
于 2013-03-12T17:21:42.823 回答