按2个自定义域排序帖子,如果一个自定义域为零,则按另一个自定义域排序

时间:2013-11-06 作者:Ryan

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

请参见下面的详细信息

我有一个称为“住宿”的自定义帖子类型,对于这种帖子类型,有两个自定义字段,一个是“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 );
如果有人能帮我,我会非常感激的

1 个回复
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\',

)
谢谢

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post