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.
Метод класса: Abstract_WC_Order_Data_Store_CPT{}
Хуков нет.
Возвращает
float. Absolute total.
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->get_refunded_item_meta_total( $order, $item_type, $meta_keys ): float;
- $order(WC_Order) (обязательный)
- Order object.
- $item_type(строка) (обязательный)
- Order item type (e.g.
'tax', 'shipping'). - $meta_keys(массив) (обязательный)
- Meta keys to sum.
Список изменений
| С версии 10.7.0 | Введена. |
Код Abstract_WC_Order_Data_Store_CPT::get_refunded_item_meta_total() Abstract WC Order Data Store CPT::get refunded item meta total WC 11.2.2
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' ) );
$order_itemmeta = $wpdb->prefix . 'woocommerce_order_itemmeta';
$order_items = $wpdb->prefix . 'woocommerce_order_items';
$total = $wpdb->get_var(
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $refund_join is already prepared; trusted table names.
// phpcs:disable WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber -- $meta_keys is splatted.
$wpdb->prepare(
"SELECT SUM( order_itemmeta.meta_value )
FROM {$order_itemmeta} AS order_itemmeta
INNER JOIN $refund_join
INNER JOIN {$order_items} 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 )",
$item_type,
...$meta_keys,
)
// phpcs:enable
) ?? 0;
return abs( $total );
}