根据父级属性查询帖子

时间:2013-04-09 作者:Robin Westerlundh

这就是场景:我有多个页面,所有页面都有一个名为“Location”的自定义字段,这些页面都有子页面,自定义字段为“size\\u m2”。

我想做的是执行一个普通的meta\\u查询,列出所有页面,比如“size\\u m2>=55”,但前提是父页面具有“Location==Stockholm”。

我需要为此使用自定义SQL查询吗?或者我可以查询parent\\u pages子项,以及何时筛选和“查询”该查询?

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

您的问题是:

foreach post where A is true, that has a child where B is true
实际上是:

foreach post where A is true
    that has a child where B is true
所以这不是您应该在1查询中执行的操作。相反,您需要执行n个查询,其中n=parentposts+1。1个查询以查找父项,然后查询每个父项以查找子项。

显然,这不会很快。

问题的根源是您的数据结构不合适。您尝试的是使用post meta重新创建分类法。

相反,创建一个称为“位置”的自定义分类法,并创建一个斯德哥尔摩术语。然后查询所有包含大小元的帖子,并添加\'Location\' => \'Stockholm\'.

优点:

查询大大简化了,您可以免费获得一个运行良好、经过广泛测试的管理界面,它的速度非常快,您可以获得免费的档案,例如。com/location/stockholm/li>通过新模板与模板继承人紧密集成:taxonomy.php, taxonomy-location.php 甚至taxonomy-location-stockholm.php

如果遇到需要执行sql查询的情况,说明您做错了。

SO网友:vancoder

无法使用在帖子的父级上运行子查询WP_Query, 不幸地当然,您可以运行两个单独的WP\\u查询,使用PHP将第一个查询(在父查询上)的结果应用到WHERE 第二个(孩子)。

但是,我只需要使用wpdb.

结束

相关推荐

自定义Metabox类中的SAVE_POST操作不起作用

我正在编写一个类来创建元盒并保存表单数据。问题是,我在单击“发布”时不断收到警告:警告:call_user_func_array() 要求参数1是有效的回调函数Mighty_Metabox 找不到或函数名无效“我知道的一些事情:meta框显示在页面加载上。页面加载时调用save函数。发布时返回上述警告。发布时不调用save函数。我需要把save_post 其他地方的动作钩?我把wordpress集成到我的课堂上是不是完全错了?对于如何以及何时调用save方法等方法的一些帮助,我们将不胜感激: if