WC_Meta_Box_Order_Data::save( int $order_id )
Save meta box data.
Description Description
Parameters Parameters
- $order_id
-
(Required) Order ID.
Source Source
File: includes/admin/meta-boxes/class-wc-meta-box-order-data.php
public static function save( $order_id ) { self::init_address_fields(); // Ensure gateways are loaded in case they need to insert data into the emails. WC()->payment_gateways(); WC()->shipping(); // Get order object. $order = wc_get_order( $order_id ); $props = array(); // Create order key. if ( ! $order->get_order_key() ) { $props['order_key'] = wc_generate_order_key(); } // Update customer. $customer_id = isset( $_POST['customer_user'] ) ? absint( $_POST['customer_user'] ) : 0; if ( $customer_id !== $order->get_customer_id() ) { $props['customer_id'] = $customer_id; } // Update billing fields. if ( ! empty( self::$billing_fields ) ) { foreach ( self::$billing_fields as $key => $field ) { if ( ! isset( $field['id'] ) ) { $field['id'] = '_billing_' . $key; } if ( ! isset( $_POST[ $field['id'] ] ) ) { continue; } if ( is_callable( array( $order, 'set_billing_' . $key ) ) ) { $props[ 'billing_' . $key ] = wc_clean( wp_unslash( $_POST[ $field['id'] ] ) ); } else { $order->update_meta_data( $field['id'], wc_clean( wp_unslash( $_POST[ $field['id'] ] ) ) ); } } } // Update shipping fields. if ( ! empty( self::$shipping_fields ) ) { foreach ( self::$shipping_fields as $key => $field ) { if ( ! isset( $field['id'] ) ) { $field['id'] = '_shipping_' . $key; } if ( ! isset( $_POST[ $field['id'] ] ) ) { continue; } if ( is_callable( array( $order, 'set_shipping_' . $key ) ) ) { $props[ 'shipping_' . $key ] = wc_clean( wp_unslash( $_POST[ $field['id'] ] ) ); } else { $order->update_meta_data( $field['id'], wc_clean( wp_unslash( $_POST[ $field['id'] ] ) ) ); } } } if ( isset( $_POST['_transaction_id'] ) ) { $props['transaction_id'] = wc_clean( wp_unslash( $_POST['_transaction_id'] ) ); } // Payment method handling. if ( $order->get_payment_method() !== wp_unslash( $_POST['_payment_method'] ) ) { $methods = WC()->payment_gateways->payment_gateways(); $payment_method = wc_clean( wp_unslash( $_POST['_payment_method'] ) ); $payment_method_title = $payment_method; if ( isset( $methods ) && isset( $methods[ $payment_method ] ) ) { $payment_method_title = $methods[ $payment_method ]->get_title(); } $props['payment_method'] = $payment_method; $props['payment_method_title'] = $payment_method_title; } // Update date. if ( empty( $_POST['order_date'] ) ) { $date = time(); } else { $date = gmdate( 'Y-m-d H:i:s', strtotime( $_POST['order_date'] . ' ' . (int) $_POST['order_date_hour'] . ':' . (int) $_POST['order_date_minute'] . ':' . (int) $_POST['order_date_second'] ) ); } $props['date_created'] = $date; // Set created via prop if new post. if ( isset( $_POST['original_post_status'] ) && $_POST['original_post_status'] === 'auto-draft' ) { $props['created_via'] = 'admin'; } // Save order data. $order->set_props( $props ); $order->set_status( wc_clean( wp_unslash( $_POST['order_status'] ) ), '', true ); $order->save(); }