自定义WP_Query - 忽略meta_query

时间:2013-01-01 12:10:10

标签: custom-fields wordpress

我想展示一些具有特定元键值的“艺术品”。每件艺术品都有一个自定义字段:“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的艺术作品。我犯了错误吗?

1 个答案:

答案 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',
    ),