按多个查询中的自定义字段排序

时间:2013-07-08 作者:Guiloviu

执行后this question, 我转到下一步,我想按另一个自定义字段对查询结果进行排序。

我想按包含日期的自定义字段对结果进行排序,并希望获得从最低日期到最高日期的顺序

问题是我没有得到我点的东西。我尝试了几种方法,但都没有成功,我搜索了几个网站,什么都没有。我很难再问你一次,但我解决不了这个问题。

有人能帮我吗?:\'(

我留下我的代码以查看您应该将orderby嵌入到哪里:

    $group_1 = get_posts(
    array(
        \'posts_per_page\' => 30,
        \'fields\'         => \'ids\',
        \'meta_query\'     => array (
            array (
                \'key\'   => \'field1\',
                \'value\' => \'data1,
            ),
            array (
                \'key\'   => \'field2\',
                \'value\' => \'data2\',
            ),
        ),
    )
);

$group_2 = get_posts(
    array(
        \'posts_per_page\' => 30,
        \'fields\'         => \'ids\',
        \'meta_query\'     => array (
            array (
                \'key\'   => \'field1\',
                \'value\' => \'data2\',
            ),
            array (
                \'key\'   => \'field2\',
                \'value\' => \'data1\',
            ),
        ),
    )
);

$the_query = new WP_Query(
    array(
        \'post__in\' => array_merge( $group_1, $group_2)
    )
);
谢谢!

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

你需要\'order_by\' => \'post__in\' 在上一次查询中"Preserve post ID order given in the post__in array (available with Version 3.5).".

我不知道您传递的订单是否是array_merge( $group_1, $group_2). 换句话说,您需要为第二个查询提供一组有序的ID而你似乎没有那么做。

我也不知道meta_key您已经查询的是您想要的orderby. 可能类似的方法会奏效:

$the_query = new WP_Query(
    array(
        \'post__in\' => array_merge( $group_1, $group_2),
        \'meta_key\' => \'your_date_field_key\',
        \'orderby\'  => \'meta_value\',
    )
);
这完全没有经过测试。可能是马车。买主注意事项。不退款。

结束

相关推荐

定制SQL查询ORDER BY TERM_ORDER

我有一个自定义分类法,它在“series”下列出术语,其中包含的帖子也以“media\\u type”下的术语出现,其中media\\u type是term\\u id 16。我想按terms表中的term\\u order列对列表进行排序,但它不起作用。我做错了什么?谢谢 $q_result = $wpdb->get_col(\"SELECT DISTINCT {$wpdb->terms}.name FROM {$wpdb->terms} INNE