我想展示一些具有特定元键值的“艺术品”。每件艺术品都有一个自定义字段:“votes_average”和另一个“votes_count”。这是我的自定义查询:
$args = array(
'post_type' => 'artworks',
'post_status' => 'publish',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'votes_average',
'value' => '6',
'compare' => '>=',
'type' => 'DECIMAL',
),
array(
'key' => 'votes_count',
'value' => '1',
'compare' => '>',
'type' => 'NUMERIC',
),
),
'tax_query' => array(
array(
'taxonomy' => 'type',
'field' => 'slug',
'terms' => $term
)
)
);
我不明白为什么这个查询会显示平均为5,8的艺术作品。我犯了错误吗?
答案 0 :(得分:0)
问题是MySQL将5.8舍入到6并在查询中使用。适当的查询部分看起来像
(wp_postmeta.meta_key = 'votes_average' AND CAST(wp_postmeta.meta_value AS DECIMAL) >= '6')
所以你可以用NUMERIC替换DECIMAL来解决这个问题。
array(
'key' => 'votes_average',
'value' => '6',
'compare' => '>=',
'type' => 'NUMERIC',
),