WC_REST_Orders_V1_Controller::query_args()publicWC 1.0

Query args.

Method of the class: WC_REST_Orders_V1_Controller{}

No Hooks.

Return

Array.

Usage

$WC_REST_Orders_V1_Controller = new WC_REST_Orders_V1_Controller();
$WC_REST_Orders_V1_Controller->query_args( $args, $request );
$args(array) (required)
-
$request(WP_REST_Request) (required)
-

WC_REST_Orders_V1_Controller::query_args() code WC 8.6.1

public function query_args( $args, $request ) {
	global $wpdb;

	// Set post_status.
	if ( 'any' !== $request['status'] ) {
		$args['post_status'] = 'wc-' . $request['status'];
	} else {
		$args['post_status'] = 'any';
	}

	if ( isset( $request['customer'] ) ) {
		if ( ! empty( $args['meta_query'] ) ) {
			$args['meta_query'] = array();
		}

		$args['meta_query'][] = array(
			'key'   => '_customer_user',
			'value' => $request['customer'],
			'type'  => 'NUMERIC',
		);
	}

	// 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'] ) );

		// Force WP_Query return empty if don't found any order.
		$order_ids = ! empty( $order_ids ) ? $order_ids : array( 0 );

		$args['post__in'] = $order_ids;
	}

	// Search.
	if ( ! empty( $args['s'] ) ) {
		$order_ids = wc_order_search( $args['s'] );

		if ( ! empty( $order_ids ) ) {
			unset( $args['s'] );
			$args['post__in'] = array_merge( $order_ids, array( 0 ) );
		}
	}

	return $args;
}