Wordpress查询 - 按meta_value_num和日期排序

时间:2014-04-08 08:10:38

标签: wordpress wp-query

我的wp_query中的订单暂时有点卡住了。

我想首先按meta_value_num对此查询进行排序(这完美无缺)并按日期回退。但在我的查询中,与meta_value_num相比,日期似乎占主导地位。

所以它按日期对我的所有帖子进行排序,然后按照meta_num_value顺序排序,反之亦然。

你有什么线索怎么做?

$args = array(
    'post_type' => 'anbieter',
    'showposts' => -1,
    'order' => 'DESC',
    'orderby' => 'meta_value_num date',
    'meta_key' => 'rating'
);

我找到了很多线程,可以通过两个自定义字段进行排序,但不能按"正常的帖子字段排序"和自定义字段。

的问候,

1 个答案:

答案 0 :(得分:1)

前一段时间我找到了解决方案。将其添加到您的functions.php:

function wdw_query_orderby_postmeta_date( $orderby ){
    $new_orderby = str_replace( "wp_postmeta.meta_value", "STR_TO_DATE(wp_postmeta.meta_value, '%d-%m-%Y')", $orderby );
    return $new_orderby;
}

然后使用您的查询执行此操作:

add_filter( 'posts_orderby', 'wdw_query_orderby_postmeta_date', 10, 1);
$args = array(
    'post_type' => 'anbieter',
    'showposts' => -1,
    'order' => 'DESC',
    'orderby' => 'meta_value',
    'meta_key' => 'rating'
);
remove_filter( 'posts_orderby', 'wdw_query_orderby_postmeta_date', 10, 1);