1

特定のメタ キー値を持つ「アートワーク」を表示したいと思います。各アートワークには、「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 のアートワークを表示する理由がわかりません。私は間違いを犯しましたか?

4

1 に答える 1

1

問題は、MySQL が 5.8 を 6 に丸め、クエリで使用したことです。適切なクエリ部分は次のようになります

(wp_postmeta.meta_key = 'votes_average' AND CAST(wp_postmeta.meta_value AS DECIMAL) >= '6')

したがって、この問題を解決するには、DECIMAL を NUMERIC に置き換えることができます。

    array(
       'key' => 'votes_average',
       'value' => '6',
       'compare' => '>=',
       'type'    => 'NUMERIC',
    ),
于 2013-01-01T14:30:09.853 に答える