Woocommerce REST API排除订单端点中的特定产品

时间:2020-07-30 12:45:49

标签: wordpress woocommerce woocommerce-rest-api

我想在订单端点中排除特定的产品订单 / wp-json / wc / v3 / orders

我尝试了订单准备查询挂钩,但无法正常工作。

add_filter('woocommerce_rest_orders_prepare_object_query', function (array $args, \WP_REST_Request $request) {


    $args['product_id'] != 21380;

    return $args;
}, 10, 2);

如果有人可以帮助我,我会很感激。

1 个答案:

答案 0 :(得分:0)

最后,我找到了解决方案。

参考 https://github.com/woocommerce/woocommerce-rest-api/blob/master/src/Controllers/Version2/class-wc-rest-orders-v2-controller.php

add_filter('woocommerce_rest_orders_prepare_object_query', function (array $args, \WP_REST_Request $request) {

    global $wpdb;
   // Search by product.
        if ( ! empty( $request['product'] ) ) {
            $order_ids = $wpdb->get_col(
                $wpdb->prepare(
                    "SELECT order_id
                    FROM {$wpdb->prefix}woocommerce_order_items
                    WHERE order_item_id IN ( SELECT order_item_id FROM {$wpdb->prefix}woocommerce_order_itemmeta WHERE meta_key = '_product_id' AND meta_value = %d )
                    AND order_item_type = 'line_item'",
                    $request['product']
                )
            );

    $order_ids = !empty($order_ids) ? $order_ids : array(0);
    $args['post__in'] = $order_ids;
    return $args;
}, 10, 2);