首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按2个自定义字段订购posts,如果一个自定义字段为零,则按另一个自定义字段订购

按2个自定义字段订购posts,如果一个自定义字段为零,则按另一个自定义字段订购
EN

Stack Overflow用户
提问于 2013-11-06 11:27:56
回答 1查看 164关注 0票数 0

我有一个非常棘手的函数要实现,无法通过搜索找到一种方法

请参阅以下详细资料

我有一个定制的帖子类型叫做“住宿”,对于这个帖子类型,有两个自定义字段,一个是"max_sleep_1",另一个是"max_sleep_2“。

现在,对于这个post类型下的一些帖子,设置了"max_sleep_1“,而对于其他帖子,设置了"max_sleep_2”,但是我需要按最大睡眠数(这两个字段之间最多的一个)对所有帖子进行排序。

例如

post1将"max_sleep_1“设置为1,"max_sleep_2”设置为0

post2将"max_sleep_2“设置为2,"max_sleep_1”设置为0

post3将"max_sleep_1“设置为3,"max_sleep_2”设置为0

因此,post的最后顺序应该是post1->post2->post3,因此您可以看到问题所在,我按两个字段排序,当"max_sleep_1“设置为0时,我需要使用"max_sleep_2”进行排序。

希望你能理解我的意思

我一直在搜索,但没有找到合适的解决方案,我也尝试合并这两个字段后,我得到了WP_query的结果,但也不可能到目前为止

现在我只能使用meta键按一个字段排序,结果是post1->post3->post2,如下所示

代码语言:javascript
运行
复制
$args = array(
'post_type'   => 'accommodation',
'paged'       => get_query_var('paged'),
'post_parent' => $parent,
'meta_key'    => 'max_sleep_1',
'orderby'     => 'meta_value_num',
'order'       => 'ASC'  
);
$the_query = new WP_Query( $args );

如果有人能帮我,我会非常感激的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-07 10:44:00

好吧,让我回答我自己的问题,这可能不是完美的,但它有效。

首先,我通常使用WP_query查询帖子,然后自己构建一个包含2个值的关联数组,一个是post ID,另一个是顺序(这里我将两个order字段合并为一个)

然后,我使用"uasort“对基于合并顺序构建的关联数组进行排序,因此现在我有了一个具有有序post ID值的数组。

然后我再次使用WP_query进行查询,这次我使用我已排序的"post_in“数组进行查询,然后对=> "post_in”进行排序,这样就得到了我想要的结果(按正确的顺序)。

这是一个非常具体的案例,希望这对未来的人有所帮助。

关键是查询变量"post_in“,您可以通过"post_in”数组进行排序,因此,只要您构建一个"post_in“数组,就可以查询任意顺序的帖子,如下所示

代码语言:javascript
运行
复制
$args = array(
'post_type' => 'accommodation',
'post_parent' => $parent,
'post__in' => $ordered_array, 
'orderby' => 'post__in',

)

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19810899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档