我的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'
);
我找到了很多线程,可以通过两个自定义字段进行排序,但不能按"正常的帖子字段排序"和自定义字段。
的问候,
答案 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);