تابع ووکامرسی wc_save_order_items ذخیره اقلام محصولات سفارش
تابع ووکامرسی wc_save_order_items – ذخیره اقلام محصولات در سفارش
Syntax – سینتکس
wc_save_order_items( (int) $order_id, (array) $items );
Parameters – پارامتر ها (2)
- 1- $order_id (int)
- 2- $items (array)
Usage – نحوه استفاده
if ( !function_exists( 'wc_save_order_items' ) ) { require_once ABSPATH . PLUGINDIR . 'woocommerce/includes/admin/wc-admin-functions.php'; } // The order id. $order_id = -1; // Order items to save $items = array(); // NOTICE! Understand what this does before running. $result = wc_save_order_items($order_id, $items);
Defined – محل تعریف
/includes/admin/wc-admin-functions.php
function wc_save_order_items( $order_id, $items ) { // Allow other plugins to check change in order items before they are saved do_action( 'woocommerce_before_save_order_items', $order_id, $items ); $order = wc_get_order( $order_id ); // Line items and fees if ( isset( $items['order_item_id'] ) ) { $data_keys = array( 'line_tax' => array(), 'line_subtotal_tax' => array(), 'order_item_name' => null, 'order_item_qty' => null, 'order_item_tax_class' => null, 'line_total' => null, 'line_subtotal' => null, ); foreach ( $items['order_item_id'] as $item_id ) { if ( ! $item = $order->get_item( absint( $item_id ) ) ) { continue; } $item_data = array(); foreach ( $data_keys as $key => $default ) { $item_data[ $key ] = isset( $items[ $key ][ $item_id ] ) ? wc_clean( wp_unslash( $items[ $key ][ $item_id ] ) ) : $default; } if ( '0' === $item_data['order_item_qty'] ) { $item->delete(); continue; } $item->set_props( array( 'name' => $item_data['order_item_name'], 'quantity' => $item_data['order_item_qty'], 'tax_class' => $item_data['order_item_tax_class'], 'total' => $item_data['line_total'], 'subtotal' => $item_data['line_subtotal'], 'taxes' => array( 'total' => $item_data['line_tax'], 'subtotal' => $item_data['line_subtotal_tax'], ), ) ); if ( isset( $items['meta_key'][ $item_id ], $items['meta_value'][ $item_id ] ) ) { foreach ( $items['meta_key'][ $item_id ] as $meta_id => $meta_key ) { $meta_value = isset( $items['meta_value'][ $item_id ][ $meta_id ] ) ? wp_unslash( $items['meta_value'][ $item_id ][ $meta_id ] ) : ''; if ( '' === $meta_key && '' === $meta_value ) { if ( ! strstr( $meta_id, 'new-' ) ) { $item->delete_meta_data_by_mid( $meta_id ); } } elseif ( strstr( $meta_id, 'new-' ) ) { $item->add_meta_data( $meta_key, $meta_value, false ); } else { $item->update_meta_data( $meta_key, $meta_value, $meta_id ); } } } $item->save(); } } // Shipping Rows if ( isset( $items['shipping_method_id'] ) ) { $data_keys = array( 'shipping_method' => null, 'shipping_method_title' => null, 'shipping_cost' => 0, 'shipping_taxes' => array(), ); foreach ( $items['shipping_method_id'] as $item_id ) { if ( ! $item = $order->get_item( absint( $item_id ) ) ) { continue; } $item_data = array(); foreach ( $data_keys as $key => $default ) { $item_data[ $key ] = isset( $items[ $key ][ $item_id ] ) ? wc_clean( wp_unslash( $items[ $key ][ $item_id ] ) ) : $default; } $item->set_props( array( 'method_id' => $item_data['shipping_method'], 'method_title' => $item_data['shipping_method_title'], 'total' => $item_data['shipping_cost'], 'taxes' => array( 'total' => $item_data['shipping_taxes'], ), ) ); if ( isset( $items['meta_key'][ $item_id ], $items['meta_value'][ $item_id ] ) ) { foreach ( $items['meta_key'][ $item_id ] as $meta_id => $meta_key ) { $meta_value = isset( $items['meta_value'][ $item_id ][ $meta_id ] ) ? wp_unslash( $items['meta_value'][ $item_id ][ $meta_id ] ) : ''; if ( '' === $meta_key && '' === $meta_value ) { if ( ! strstr( $meta_id, 'new-' ) ) { $item->delete_meta_data_by_mid( $meta_id ); } } elseif ( strstr( $meta_id, 'new-' ) ) { $item->add_meta_data( $meta_key, $meta_value, false ); } else { $item->update_meta_data( $meta_key, $meta_value, $meta_id ); } } } $item->save(); } } // Updates tax totals $order->update_taxes(); // Calc totals - this also triggers save $order->calculate_totals( false ); // Inform other plugins that the items have been saved do_action( 'woocommerce_saved_order_items', $order_id, $items ); }
versions – نسخه ها
از نسخه : 2.2
نسخه فعلی : 3.0.6
دیگر نسخه ها : 3.0.6 , 3.0.5 , 3.0.4 , 3.0.3 , 3.0.2
ارسال نظر