按2个自定义字段订购帖子,如果一个自定义字段由另一个自定义字段为零

时间:2013-11-06 11:27:57

标签: wordpress sql-order-by custom-post-type

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

请参阅以下详细信息

我有一个名为“住宿”的自定义帖子类型,对于此帖子类型,有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 );

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

1 个答案:

答案 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',

)

感谢