Merge branch 'expand_item_meta'
This commit is contained in:
commit
8c157e5e23
|
@ -1138,6 +1138,25 @@ abstract class WC_Abstract_Order {
|
||||||
|
|
||||||
$items = array();
|
$items = array();
|
||||||
|
|
||||||
|
// Loop items
|
||||||
|
foreach ( $line_items as $item ) {
|
||||||
|
$items[ $item->order_item_id ]['name'] = $item->order_item_name;
|
||||||
|
$items[ $item->order_item_id ]['type'] = $item->order_item_type;
|
||||||
|
$items[ $item->order_item_id ]['item_meta'] = $this->get_item_meta( $item->order_item_id );
|
||||||
|
$items[ $item->order_item_id ]['item_meta_array'] = $this->get_item_meta_array( $item->order_item_id );
|
||||||
|
$items[ $item->order_item_id ] = $this->expand_item_meta( $items[ $item->order_item_id ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
return apply_filters( 'woocommerce_order_get_items', $items, $this );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Expand item meta into the $item array.
|
||||||
|
* @since 2.4.0
|
||||||
|
* @param array $item before expansion
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function expand_item_meta( $item ) {
|
||||||
// Reserved meta keys
|
// Reserved meta keys
|
||||||
$reserved_item_meta_keys = array(
|
$reserved_item_meta_keys = array(
|
||||||
'name',
|
'name',
|
||||||
|
@ -1154,29 +1173,20 @@ abstract class WC_Abstract_Order {
|
||||||
'line_subtotal_tax'
|
'line_subtotal_tax'
|
||||||
);
|
);
|
||||||
|
|
||||||
// Loop items
|
// Expand item meta if set
|
||||||
foreach ( $line_items as $item ) {
|
if ( ! empty( $item['item_meta'] ) ) {
|
||||||
$items[ $item->order_item_id ]['name'] = $item->order_item_name;
|
foreach ( $item['item_meta'] as $name => $value ) {
|
||||||
$items[ $item->order_item_id ]['type'] = $item->order_item_type;
|
if ( in_array( $name, $reserved_item_meta_keys ) ) {
|
||||||
$items[ $item->order_item_id ]['item_meta'] = $this->get_item_meta( $item->order_item_id );
|
continue;
|
||||||
$items[ $item->order_item_id ]['item_meta_array'] = $this->get_item_meta_array( $item->order_item_id );
|
}
|
||||||
|
if ( '_' === substr( $name, 0, 1 ) ) {
|
||||||
// Expand meta data into the array
|
$item[ substr( $name, 1 ) ] = $value[0];
|
||||||
if ( $items[ $item->order_item_id ]['item_meta'] ) {
|
} elseif ( ! in_array( $name, $reserved_item_meta_keys ) ) {
|
||||||
foreach ( $items[ $item->order_item_id ]['item_meta'] as $name => $value ) {
|
$item[ $name ] = make_clickable( $value[0] );
|
||||||
if ( in_array( $name, $reserved_item_meta_keys ) ) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if ( '_' === substr( $name, 0, 1 ) ) {
|
|
||||||
$items[ $item->order_item_id ][ substr( $name, 1 ) ] = $value[0];
|
|
||||||
} elseif ( ! in_array( $name, $reserved_item_meta_keys ) ) {
|
|
||||||
$items[ $item->order_item_id ][ $name ] = make_clickable( $value[0] );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return $item;
|
||||||
return apply_filters( 'woocommerce_order_get_items', $items, $this );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1146,6 +1146,7 @@ class WC_AJAX {
|
||||||
$item['line_subtotal_tax'] = '';
|
$item['line_subtotal_tax'] = '';
|
||||||
$item['line_total'] = wc_format_decimal( $_product->get_price_excluding_tax() );
|
$item['line_total'] = wc_format_decimal( $_product->get_price_excluding_tax() );
|
||||||
$item['line_tax'] = '';
|
$item['line_tax'] = '';
|
||||||
|
$item['type'] = 'line_item';
|
||||||
|
|
||||||
// Add line item
|
// Add line item
|
||||||
$item_id = wc_add_order_item( $order_id, array(
|
$item_id = wc_add_order_item( $order_id, array(
|
||||||
|
@ -1177,7 +1178,10 @@ class WC_AJAX {
|
||||||
do_action( 'woocommerce_ajax_add_order_item_meta', $item_id, $item );
|
do_action( 'woocommerce_ajax_add_order_item_meta', $item_id, $item );
|
||||||
}
|
}
|
||||||
|
|
||||||
$item = apply_filters( 'woocommerce_ajax_order_item', $item, $item_id );
|
$item['item_meta'] = $order->get_item_meta( $item_id );
|
||||||
|
$item['item_meta_array'] = $order->get_item_meta_array( $item_id );
|
||||||
|
$item = $order->expand_item_meta( $item );
|
||||||
|
$item = apply_filters( 'woocommerce_ajax_order_item', $item, $item_id );
|
||||||
|
|
||||||
include( 'admin/meta-boxes/views/html-order-item.php' );
|
include( 'admin/meta-boxes/views/html-order-item.php' );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue