首页 > 解决方案 > wc_order_query 与 meta_query 在使用关系时不起作用

问题描述

我正在尝试使用 WC_Order_Query 来获取自定义 meta_key 不存在、为空或等于 0 的所有订单

我已经尝试过这个网站上记录的很多东西,但似乎没有任何效果。它只返回所有内容,这与我想要做的相反。

这是迄今为止大多数人所推荐的,但它似乎没有按预期工作,或者我在这里没有看到问题

    $args = array(
        'limit'     => 9999,
        'return'    => 'ids',
        'orderby'   => 'date',
        'order'     => 'DESC',
        'status'    => 'processing',
        'date_created' => '>='.$startdate,
        'meta_query'    => array(
            array(
                'relation' => 'OR',
                array(
                    'key'   => 'order_printed',
                    'compare' => 'NOT EXISTS'
                ),
                array(
                    'key'   => 'order_printed',
                    'compare' => '=',
                    'value' => ''
                ),
                array(
                    'key'   => 'order_printed',
                    'compare' => '=',
                    'value' => 0
                )
            )
            
        )
    );
    $query = new WC_Order_Query( $args );
    $orders = $query->get_orders();

标签: phpwordpresswoocommerce

解决方案


这最终成为解决方案:

    $args = array(
        'post_type'         => 'shop_order',
        'posts_per_page'    => -1,
        'post_status'       => 'any',
        'orderby'           => 'the_date',
        'order'             => 'DESC',
        'date_query'        => array(
            array(
                'after'     => $startdate . $starttime,
                'inclusive' => true
            )
        ),
        'meta_query'        => array(
            array(
                'relation'  => 'OR',
                array(
                    'key'       => 'order_printed',
                    'compare'   => 'NOT EXISTS'
                ),
                array(
                    'key'       => 'order_printed',
                    'compare'   => '=',
                    'value'     => ''
                ),
                array(
                    'key'       => 'order_printed',
                    'compare'   => '=',
                    'value'     => 0
                )
            )
            
        )
    );
    $query = new WP_Query( $args );
    $query_posts = $query->get_posts();

非常感谢鲍里斯的帮助。


推荐阅读