我正在尝试以折扣金额订购我的产品。 我已将折扣保存为我的post-meta中的数字" discount",但是当我使用以下代码时:
$productArgs = array(
'posts_per_page' => 20,
'post_type' => 'product',
'meta_key' => 'discount',
'orderby' => 'meta_value_decimal',
'order' => 'DESC',
'meta_type' => 'DECIMAL',
);
$test = $productArgs;
$products = get_posts($productArgs);
产品显示如下:0%,50%,55%,28%。
即使我将order
更改为ASC,输出也没有任何反应。
我还尝试了'orderby' => 'meta_value
,没有'meta_type'
。
有没有人知道造成这种情况的原因是什么?
修改
我弄清楚了我的错误..我的帖子被添加到一个数组中,ID作为数组键,按照后ID排序。
答案 0 :(得分:0)
如果折扣字段都是数字,请尝试'orderby' => 'meta_value_num'
并删除meta_type
参数。
答案 1 :(得分:0)
您可以为orderby参数定义元键,例如
query_posts(
array( 'post_type' => 'product',
'order' => 'ASC',
'meta_key' => 'discount',
'orderby' => 'meta_value', //or 'meta_value_num'
'meta_query' => array(
array('key' => 'order_in_archive',
'value' => 'some_value'
)
)
)
);
希望这会奏效。