我有一个名为“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);
?>
最合适的回答,由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\'
)
),