Table of Contents
Aggregate distance and duration from metadata of an order
function customer_save_dbsr_data( WC_Order $order ): void {
$cached = WC()->session ? WC()->session->get( 'octolize-dbsr' ) : null;
$result = is_array( $cached ) ? ( $cached['value'] ?? null ) : null;
if (
! is_array( $result )
|| 'ok' !== ( $result['status'] ?? '' )
|| ! isset( $result['distance'], $result['duration'] )
) {
return;
}
$order->update_meta_data( '_dbsr_distance_meters', (float) $result['distance'] );
$order->update_meta_data( '_dbsr_duration_seconds', (float) $result['duration'] );
}
add_action( 'woocommerce_checkout_create_order', 'customer_save_dbsr_data', 20 );
add_action( 'woocommerce_store_api_checkout_update_order_from_request', 'customer_save_dbsr_data', 20 );
Data is saved in wp_wc_orders_meta.