WC_Abstract_Order::save_items
Save all order items which are part of this order.
Метод класса: WC_Abstract_Order{}
Хуков нет.
Возвращает
null. Ничего (null).
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->save_items();
Код WC_Abstract_Order::save_items() WC Abstract Order::save items WC 10.5.2
protected function save_items() {
$items_changed = false;
foreach ( $this->items_to_delete as $item ) {
$item->delete();
$items_changed = true;
}
$this->items_to_delete = array();
// Add/save items.
foreach ( $this->items as $item_group => $items ) {
if ( is_array( $items ) ) {
$items = array_filter( $items );
foreach ( $items as $item_key => $item ) {
$item->set_order_id( $this->get_id() );
$item_id = $item->save();
// If ID changed (new item saved to DB)...
if ( $item_id !== $item_key ) {
$this->items[ $item_group ][ $item_id ] = $item;
unset( $this->items[ $item_group ][ $item_key ] );
$items_changed = true;
}
}
}
}
if ( $items_changed ) {
delete_transient( 'wc_order_' . $this->get_id() . '_needs_processing' );
// Invalidate the order cache to prevent stale item data.
// This fixes a race condition where get_items() may have been called
// before items were saved, caching empty items arrays.
// See https://github.com/woocommerce/woocommerce/issues/62173.
if ( OrderUtil::orders_cache_usage_is_enabled() ) {
wc_get_container()->get( OrderCache::class )->remove( $this->get_id() );
}
}
}