此假设查询中嵌套的wp_Query循环过多吗?

时间:2011-09-12 作者:Michelle

我正在尝试一些比我以前用WordPress做的更复杂的事情,所以如果这个问题没有意义,请原谅我。

我有一个图书档案页面,希望它显示我自定义帖子类型“图书”的摘录,首先按流派排序,然后按系列排序,然后按阅读顺序排序。所以看起来是这样的:

历史流派

---我的第一个历史系列;系列说明;

------第1、2、3册

---我的第二个历史系列;系列说明;

------第1、2、3册

当代流派

。。。等

I have gone back and forth on how to set up my data. 现在,我是这样安排的:

“Series”是一种自定义帖子类型,带有自定义字段“Genre”和“Description”;

“Books”是一种自定义帖子类型,带有“Series”(由当前发布的系列填充的下拉列表)和阅读顺序(数字)的自定义字段。

因此,从概念上讲,我认为我需要执行以下代码来显示我的图书归档页面:

WP\\u查询,选择按自定义字段类型排序的所有自定义帖子类型系列;

对于每个流派,如果与之前的流派名称没有不同,则显示流派名称;

显示系列名称和说明;

新建查询,选择当前自定义post type系列的父ID为的所有自定义post type图书,按自定义字段读取顺序排序;

查询完成后,显示下一个序列名称/描述,并从4开始重复;

当没有更多具有当前自定义字段流派的系列时,显示下一个流派名称并从2开始重复。

不过,这似乎是一大堆查询。在我开始编写所有代码之前,你能告诉我是否有更好的方法来考虑这个问题或组织我的内容吗?非常感谢!!

米歇尔

1 个回复
最合适的回答,由SO网友:Rarst 整理而成

当您需要检索和呈现大量信息时,必然会存在复杂性。主要是在PHP中的复杂查询和复杂排序之间找到适当的平衡(这是经常被忽视的选项)。

你的逻辑看起来很好,对我来说,有什么可以调整的:

  • Genre 与其说是自定义字段,不如说是分类法;

    您实际上是在这里建立post关系,最好只使用一个关系插件,而不是尝试使用自定义字段来处理它。现在看起来很容易,但在组合中加入更多的CPT,可能会分崩离析。

结束

相关推荐

Custom loop off by one post

在我的循环中,我想显示9篇不包括类别X、Y、Z和所有粘性帖子的帖子。在帖子3和5之间,我想放置一个带有自定义模板的粘性帖子。以下操作有效,但它将粘性帖子视为第一个循环中的4个帖子,这会导致丢失一个常规帖子。我必须使用WP 3.0.3<?php if (have_posts()) : ?> <?php $count = 0;?> <?php $sticky_posts = get_option(\'sticky_posts\'