比较META_QUERY小数不正确

时间:2012-03-07 作者:Dustin J

我有一个名为“rating”的自定义字段,它包含从1.0到10的小数。我正在尝试使用wp\\u query来获取评分为8.0到10的所有帖子。到目前为止,我所做的工作几乎完美无瑕,但它并没有返回评级为10的帖子。

<?php add_filter(\'get_meta_sql\',\'cast_decimal_precision\');
    function cast_decimal_precision( $array ) {
    $array[\'where\'] = str_replace(\'DECIMAL\',\'DECIMAL(1,1)\',$array[\'where\']);
    return $array;}
?> 
<?php
$args = array(
    \'posts_per_page\' => 10,
    \'paged\' => get_query_var( \'paged\' ),
    \'category_name\' => ( \'movies\' ),
    \'meta_query\' => array(
                array(
                    \'key\' => \'rating\',
                    \'value\' => 8,
                    \'compare\' => \'>\'
                )
                ),
    \'meta_key\' => \'rating\',         
    \'orderby\' => \'meta_value\',
    \'order\' => \'DESC\'
);
$wp_query = null;
$wp_query = new WP_Query($args); 
?>

1 个回复
最合适的回答,由SO网友:mor7ifer 整理而成

问题是meta_query 是一个CHAR 比较,因此默认情况下数字的顺序为1、10、2、3、4、5、6、7、8、9、a等。要解决此问题,您需要修改meta_query 具体如下:

\'meta_query\' => array(
    array(
        \'key\'     => \'rating\',
        \'value\'   => 8,
        \'compare\' => \'>=\',
        \'type\'    => \'NUMERIC\'
    )
),

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post