我有一个非常棘手的函数要实现,但无法通过搜索找到方法
请参见下面的详细信息
我有一个称为“住宿”的自定义帖子类型,对于这种帖子类型,有两个自定义字段,一个是“max\\u sleep\\u 1”,另一个是“max\\u sleep\\u 2”
现在,对于这种帖子类型下的一些帖子,设置了“max\\u sleep\\u 1”,而对于其他帖子,设置了“max\\u sleep\\u 2”,但我需要按最大睡眠数(这两个字段之间的最大值)排序所有帖子
例如
post1的“max\\u sleep\\u 1”设置为1,“max\\u sleep\\u 2”设置为0
post2将“max\\u sleep\\u 2”设置为2,“max\\u sleep\\u 1”设置为0
post3将“max\\u sleep\\u 1”设置为3,“max\\u sleep\\u 2”设置为0
因此,post的最终顺序应该是post1->post2->post3,因此您可以看到问题,我按2个字段排序,当“max\\u sleep\\u 1”设置为0时,我需要使用“max\\u sleep\\u 2”进行排序
希望你能理解我的意思
我一直在搜索,但找不到合适的解决方案,在得到WP\\u查询结果后,我也尝试合并这两个字段,但这也不起作用。
现在我只能使用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 );
如果有人能帮我,我会非常感激的
SO网友:Ryan
好吧,让我回答我自己的问题,这可能并不完美,但它是有效的
首先,我通常使用WP\\u query查询帖子,然后我自己构建了一个关联数组,包含两个值,一个是post ID,另一个是order(我在这里将两个order字段合并为一个)
然后我使用“uasort”对我基于合并顺序构建的关联数组进行排序,因此现在我有了一个具有有序post ID值的数组
然后我使用WP\\u query再次进行查询,这次我使用已排序的“post\\u in”数组进行查询,然后使用orderby=>“post\\u in”,所以我得到了我想要的结果(按正确的顺序)
这是一个非常具体的案例,希望这能对将来的人有所帮助
关键是查询变量“post\\u in”,您可以按“post\\u in”数组进行排序,因此,只要构建一个“post\\u in”数组,您就可以按任何顺序查询帖子,如下所示
$args = array(
\'post_type\' => \'accommodation\',
\'post_parent\' => $parent,
\'post__in\' => $ordered_array,
\'orderby\' => \'post__in\',
)
谢谢