WC_REST_Legacy_Orders_Controller::query_args()publicWC 1.0

Deprecated from version 3.0. It is no longer supported and can be removed in future releases. It is recommended to replace this function with the same one.

Query args.

Method of the class: WC_REST_Legacy_Orders_Controller{}

No Hooks.

Return

Array.

Usage

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

Changelog

Deprecated since 3.0

WC_REST_Legacy_Orders_Controller::query_args() code WC 8.7.0

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 ( ! empty( $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;
}