Wordpress Orderby不会订购帖子

时间:2017-04-20 12:19:56

标签: php wordpress

我正在尝试以折扣金额订购我的产品。 我已将折扣保存为我的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排序。

2 个答案:

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

希望这会奏效。