0

我有一个非常棘手的功能要实现,但无法通过搜索找到方法

请看下面的详细信息

我有一个名为“住宿”的自定义帖子类型,对于这个帖子类型,有 2 个自定义字段,一个是“max_sleep_1”,另一个是“max_sleep_2”

现在的问题是对于这种帖子类型下的一些帖子,设置了“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,所以你可以看到问题,我是按2个字段排序,当“max_sleep_1”设置为0时,我需要使用“max_sleep_2”来排序

希望你能明白我在说什么

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

现在我只能使用元键按一个字段排序,结果是 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 );

如果有人可以帮助我,我将非常感激

4

1 回答 1

0

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

首先我通常使用 WP_query 查询帖子,然后我自己构建一个关联数组,包括 2 个值,一个是帖子 ID,另一个是订单(我在这里将 2 个订单字段合并为一个)

然后我使用“uasort”对基于合并顺序构建的关联数组进行排序,所以现在我有一个带有有序帖子 ID 值的数组

然后我使用WP_query再次查询,这次我查询使用我已经排序的“post_in”数组然后orderby =>“post_in”,所以我得到了我想要的结果(以正确的顺序)

这是一个非常具体的案例,希望这可以帮助未来的人

关键是查询变量“post_in”,您可以按“post_in”数组排序,所以这样,只要构建一个“post_in”数组,您就可以查询帖子的任何顺序,如下所示

$args = array(
'post_type' => 'accommodation',
'post_parent' => $parent,
'post__in' => $ordered_array, 
'orderby' => 'post__in',

)

谢谢

于 2013-11-07T10:44:00.790 回答