WC_REST_Orders_V2_Controller::prepare_objects_query()
Prepare objects query.
Метод класса: WC_REST_Orders_V2_Controller{}
Хуки из метода
Возвращает
Массив
.
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->prepare_objects_query( $request );
- $request(WP_REST_Request) (обязательный)
- Full details about the request.
Список изменений
С версии 3.0.0 | Введена. |
Код WC_REST_Orders_V2_Controller::prepare_objects_query() WC REST Orders V2 Controller::prepare objects query WC 8.7.0
protected function prepare_objects_query( $request ) { global $wpdb; $args = parent::prepare_objects_query( $request ); // Set post_status. if ( in_array( $request['status'], $this->get_order_statuses(), true ) ) { $args['post_status'] = 'wc-' . $request['status']; } elseif ( 'any' === $request['status'] ) { $args['post_status'] = 'any'; } else { $args['post_status'] = $request['status']; } if ( isset( $request['customer'] ) ) { if ( ! empty( $args['meta_query'] ) ) { $args['meta_query'] = array(); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query } $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 ( ! OrderUtil::custom_orders_table_usage_is_enabled() && ! 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 ) ); } } /** * Filter the query arguments for a request. * * Enables adding extra arguments or setting defaults for an order collection request. * * @param array $args Key value array of query var to query value. * @param WP_REST_Request $request The request used. * * @since 4.5.0. */ $args = apply_filters( 'woocommerce_rest_orders_prepare_object_query', $args, $request ); return $args; }