Abstract_WC_Order_Data_Store_CPT::get_refunded_item_meta_total
Get the summed refund item meta value for a given order, item type, and meta keys.
Method of the class: Abstract_WC_Order_Data_Store_CPT{}
No Hooks.
Returns
float. Absolute total.
Usage
// protected - for code of main (parent) or child class $result = $this->get_refunded_item_meta_total( $order, $item_type, $meta_keys ): float;
- $order(WC_Order) (required)
- Order object.
- $item_type(string) (required)
- Order item type (e.g.
'tax', 'shipping'). - $meta_keys(array) (required)
- Meta keys to sum.
Changelog
| Since 10.7.0 | Introduced. |
Abstract_WC_Order_Data_Store_CPT::get_refunded_item_meta_total() Abstract WC Order Data Store CPT::get refunded item meta total code WC 10.7.0
protected function get_refunded_item_meta_total( $order, string $item_type, array $meta_keys ): float {
global $wpdb;
$refund_join = $this->get_refund_orders_join_clause( $order->get_id() );
$meta_placeholder = implode( ', ', array_fill( 0, count( $meta_keys ), '%s' ) );
$total = $wpdb->get_var(
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $refund_join is already prepared.
// phpcs:disable WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber -- $meta_keys is splatted.
$wpdb->prepare(
"SELECT SUM( order_itemmeta.meta_value )
FROM %i AS order_itemmeta
INNER JOIN $refund_join
INNER JOIN %i AS order_items ON ( order_items.order_id = refunds.id AND order_items.order_item_type = %s )
WHERE order_itemmeta.order_item_id = order_items.order_item_id
AND order_itemmeta.meta_key IN ( $meta_placeholder )",
$wpdb->prefix . 'woocommerce_order_itemmeta',
$wpdb->prefix . 'woocommerce_order_items',
$item_type,
...$meta_keys,
)
// phpcs:enable
) ?? 0;
return abs( $total );
}