View Categories

Distance Based Shipping Rates – Additional hooks

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.

Scroll to Top