排除没有价格设定的woocommerce产品 - wp查询

时间:2017-05-02 18:39:48

标签: php wordpress woocommerce

我正在尝试以几乎相似的正常价格展示woocommerce产品。 例如:当前产品的正常价格为1000美元

以及其他一些价格

的产品
  1. product1 - $ 1001
  2. product2 - $ 1006
  3. product3 - $ 996
  4. product4 - $ 999
  5. product5 - $ 1003
  6. product6 - $ 1001
  7. product7 - $ 1005
  8. product8 - $ 1010
  9. product9 - $ 998
  10. product10 - $ 990
  11. 现在,如果我想按价格显示最近的4个产品,那么它们将是产品1,6,4,9

    因为上面对我来说似乎有点困难,所以我试图获得

    • 价格超过1000美元的两种产品&
    • 价格超过1000美元的两种产品

    以下是我尝试过的wp查询的参数

    $args =  array(
                  'post_type'=>'product',
                  'posts_per_page'=>2, 
                  'order' => 'DESC',
                  'orderby' => 'meta_value',
                  'meta_key' => '_price',
                  'meta_query' => array(
                                    array(
                                    'key' => '_price',
                                    'value' => 1000,
                                    'compare' => '<',
                                    'type' => 'NUMERIC'
                                  ),
                                )
                 );
    

    我想它应该给我2个最近的产品,价格低于1000

    但问题是它还给了我没有设定价格的产品..所以我想排除没有定价的产品..

    提前致谢

1 个答案:

答案 0 :(得分:1)

您可以使用多个元查询,因此您可以添加一个以检查价格是否高于0:

$args =  array(
              'post_type'=>'product',
              'posts_per_page'=>2, 
              'order' => 'DESC',
              'orderby' => 'meta_value',
              'meta_key' => '_price',
              'meta_query' => array(
                                array(
                                'key' => '_price',
                                'value' => 1000,
                                'compare' => '<',
                                'type' => 'NUMERIC'
                              ),
                                array(
                                'key' => '_price',
                                'value' => 0,
                                'compare' => '>',
                                'type' => 'NUMERIC'
                              )
                            )
             );

您无需设置关系参数,因为默认设置为“AND”。