تابع ووکامرسی wc_save_order_items ذخیره اقلام محصولات سفارش

تابع ووکامرسی 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

ارسال نظر

جهت استفاده از کد حتما از تگ pre استفاده نمایید .

contact us