WC_Tracker::get_additional_order_data()private staticWC 1.0

Fetch additional data for a specific set of orders.

Метод класса: WC_Tracker{}

Хуков нет.

Возвращает

Массив. Additional data, indexed by order ID.

Использование

$result = WC_Tracker::get_additional_order_data( $order_ids );
$order_ids(массив) (обязательный)
List of order ID's to fetch data for.

Код WC_Tracker::get_additional_order_data() WC 9.6.1

private static function get_additional_order_data( $order_ids ) {
	global $wpdb;

	if ( empty( $order_ids ) || ! is_array( $order_ids ) ) {
		return array();
	}
	$joined_ids      = implode( ',', $order_ids );
	$additional_data = array();

	if ( OrderUtil::custom_orders_table_usage_is_enabled() ) {
		$op_table_name = OrdersTableDataStore::get_operational_data_table_name();

		// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
		$data = $wpdb->get_results(
			"SELECT order_id, woocommerce_version, recorded_sales
			FROM $op_table_name
			WHERE order_id IN ($joined_ids)",
			ARRAY_A
		);
		// phpcs:enable

		foreach ( $data as $row ) {
			$additional_data[ $row['order_id'] ] = array(
				'woocommerce_version' => $row['woocommerce_version'],
				'recorded_sales'      => $row['recorded_sales'] ? 'yes' : 'no',
			);
		}
	} else {
		// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
		$data = $wpdb->get_results(
			"SELECT post_id AS order_id, meta_key, meta_value
			FROM $wpdb->postmeta
			WHERE
				meta_key IN (
					'_order_currency',
					'_order_total',
					'_payment_method',
					'_payment_method_title',
					'_recorded_sales',
					'_order_version'
				)
				AND post_id IN ($joined_ids)
			",
			ARRAY_A
		);
		// phpcs:enable

		foreach ( $data as $row ) {
			$meta_key = self::map_legacy_meta_key_name( $row['meta_key'] );
			$additional_data[ $row['order_id'] ][ $meta_key ] = $row['meta_value'];
		}
	}

	return $additional_data;
}