WC_REST_Legacy_Orders_Controller::query_args()publicWC 1.0

Устарела с версии 3.0. Больше не поддерживается и может быть удалена. Рекомендуется заменить эту функцию на аналог.

Query args.

Метод класса: WC_REST_Legacy_Orders_Controller{}

Хуков нет.

Возвращает

Массив.

Использование

$WC_REST_Legacy_Orders_Controller = new WC_REST_Legacy_Orders_Controller();
$WC_REST_Legacy_Orders_Controller->query_args( $args, $request );
$args(массив) (обязательный)
-
$request(WP_REST_Request) (обязательный)
-

Список изменений

Устарела с 3.0

Код WC_REST_Legacy_Orders_Controller::query_args() 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;
}