我有一个非常棘手的功能来实现,无法通过搜索找到方法
请参阅以下详细信息
我有一个名为“住宿”的自定义帖子类型,对于此帖子类型,有2个自定义字段,一个是“max_sleep_1”,另一个是“max_sleep_2”
现在这个帖子类型下的一些帖子,“max_sleep_1”已设置,其他帖子“max_sleep_2”已设置,但我需要按最大睡眠数量排序所有帖子(这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
所以帖子的最终顺序应该是post1-> post2-> post3,所以你可以看到问题,我按2个字段排序,当“max_sleep_1”设置为0然后我需要使用“ max_sleep_2“要排序
希望你能理解我在说什么
我一直在搜索,但找不到合适的解决方案,我也尝试在得到WP_query的结果后合并这2个字段,但到目前为止也不可能
现在我只能使用元键按一个字段排序,结果是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 );
如果有人能帮助我,我将非常感激
答案 0 :(得分: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',
)
感谢