WC_REST_Orders_V1_Controller::set_item()
Wrapper method to create/update order items. When updating, the item ID provided is checked to ensure it is associated with the order.
Метод класса: WC_REST_Orders_V1_Controller{}
Хуки из метода
Возвращает
null
. Ничего (null).
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->set_item( $order, $item_type, $posted );
- $order(WC_Order) (обязательный)
- order
- $item_type(строка) (обязательный)
- -
- $posted(массив) (обязательный)
- item provided in the request body
Код WC_REST_Orders_V1_Controller::set_item() WC REST Orders V1 Controller::set item WC 8.7.0
protected function set_item( $order, $item_type, $posted ) { global $wpdb; if ( ! empty( $posted['id'] ) ) { $action = 'update'; } else { $action = 'create'; } $method = 'prepare_' . $item_type; // Verify provided line item ID is associated with order. if ( 'update' === $action ) { $result = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d AND order_id = %d", absint( $posted['id'] ), absint( $order->get_id() ) ) ); if ( is_null( $result ) ) { throw new WC_REST_Exception( 'woocommerce_rest_invalid_item_id', __( 'Order item ID provided is not associated with order.', 'woocommerce' ), 400 ); } } // Prepare item data $item = $this->$method( $posted, $action ); /** * Action hook to adjust item before save. * @since 3.0.0 */ do_action( 'woocommerce_rest_set_order_item', $item, $posted ); // Save or add to order if ( 'create' === $action ) { $order->add_item( $item ); } else { $item->save(); } }