我有一个非常棘手的函数要实现,无法通过搜索找到一种方法
请参阅以下详细资料
我有一个定制的帖子类型叫做“住宿”,对于这个帖子类型,有两个自定义字段,一个是"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,如下所示
$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 );
如果有人能帮我,我会非常感激的。
发布于 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“数组,就可以查询任意顺序的帖子,如下所示
$args = array(
'post_type' => 'accommodation',
'post_parent' => $parent,
'post__in' => $ordered_array,
'orderby' => 'post__in',
)
谢谢
https://stackoverflow.com/questions/19810899
复制相似问题