WC_Abstract_Order::add_item
Adds an order item to this order. The order item will not persist until save.
Method of the class: WC_Abstract_Order{}
No Hooks.
Returns
false|void.
Usage
$WC_Abstract_Order = new WC_Abstract_Order(); $WC_Abstract_Order->add_item( $item );
- $item(WC_Order_Item) (required)
- Order item object (product, shipping, fee, coupon, tax).
Changelog
| Since 3.0.0 | Introduced. |
WC_Abstract_Order::add_item() WC Abstract Order::add item code WC 11.1.2
public function add_item( $item ) {
$items_key = $this->get_items_key( $item );
if ( ! $items_key ) {
return false;
}
// Make sure existing items are loaded so we can append this new one.
if ( ! isset( $this->items[ $items_key ] ) ) {
$this->items[ $items_key ] = $this->get_items( $item->get_type() );
}
// Set parent.
$item instanceof WC_Order_Item ? $item->set_order( $this ) : $item->set_order_id( $this->get_id() );
// Append new row with generated temporary ID.
$item_id = $item->get_id();
if ( $item_id ) {
$this->items[ $items_key ][ $item_id ] = $item;
// Scrub this item from deferred bulk deletion snapshots, in case it was removed and then re-added before save().
$this->item_ids_to_bulk_delete = array_values(
array_filter(
$this->item_ids_to_bulk_delete,
static fn( $deleted_item_id ) => $deleted_item_id !== $item_id
)
);
foreach ( $this->item_ids_to_bulk_delete_by_type as $type => $item_ids ) {
$this->item_ids_to_bulk_delete_by_type[ $type ] = array_values(
array_filter(
$item_ids,
static fn( $deleted_item_id ) => $deleted_item_id !== $item_id
)
);
}
} else {
$this->items[ $items_key ][ 'new:' . $items_key . $this->temp_item_id_counter++ ] = $item;
}
}