Abstract_WC_Order_Data_Store_CPT::get_refunded_item_meta_total │ protected │ WC 10.7.0

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() 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 );
}