2.1 Utvecklarhooks

Den här sidan dokumenterar de WordPress actions och filters som Early Bird Shipping-pluginet tillhandahåller för utvecklare som vill bygga egna integrationer eller utöka pluginets funktionalitet.

Målgrupp: Den här sidan är avsedd för utvecklare som bygger egna integrationer eller vill påverka pluginets beteende med kod. Butiksadministratörer kan hoppa över den här sidan.

Actions

Pluginets livscykel

itsed_connect_earlybird_init

Körs efter att pluginet har initierats fullt ut och alla komponenter har registrerats.

add_action( 'itsed_connect_earlybird_init', function (): void {
    // Pluginet är fullständigt laddat — säkert att använda dess komponenter
} );

itsed_connect_earlybird_activated

Körs när pluginet aktiveras.

add_action( 'itsed_connect_earlybird_activated', function (): void {
    // Kör installationslogik vid aktivering
} );

itsed_connect_earlybird_deactivated

Körs när pluginet inaktiveras.

add_action( 'itsed_connect_earlybird_deactivated', function (): void {
    // Städa upp vid inaktivering
} );

Bokningshändelser

itsed_connect_earlybird_booking_created

Körs när en försändelsebokning har bekräftats. Använd detta för att trigga egna flöden efter att en försändelse bokats, till exempel att meddela ett lagersystem eller uppdatera ett ERP-system.

add_action( 'itsed_connect_earlybird_booking_created', function ( int $order_id ): void {
    $order = wc_get_order( $order_id );
    $tracking_code = $order->get_meta( '_earlybird_tracking_code' );
    // Integrera med externt system
}, 10, 1 );

Parametrar:

ParameterTypBeskrivning
$order_idintWooCommerce order-ID

itsed_connect_earlybird_booking_failed

Körs när ett bokningsförsök misslyckas permanent, alltså inte vid tillfälliga fel som senare kan återförsökas.

add_action( 'itsed_connect_earlybird_booking_failed', function ( int $order_id ): void {
    // Skicka larm, logga eller trigga manuell hantering
}, 10, 1 );

Parametrar:

ParameterTypBeskrivning
$order_idintWooCommerce order-ID

Statushändelser

itsed_connect_earlybird_status_updated

Körs efter att en statusuppdatering för en utgående försändelse har sparats på ordern, antingen via webhook eller manuell synkronisering.

add_action( 'itsed_connect_earlybird_status_updated', function ( int $order_id ): void {
    $order  = wc_get_order( $order_id );
    $status = $order->get_meta( '_earlybird_status' );
    // Reagera på statusändring
}, 10, 1 );

Parametrar:

ParameterTypBeskrivning
$order_idintWooCommerce order-ID

itsed_connect_earlybird_return_status_updated

Körs efter att en statusuppdatering för en returförsändelse har sparats.

add_action( 'itsed_connect_earlybird_return_status_updated', function ( int $order_id ): void {
    $order         = wc_get_order( $order_id );
    $return_status = $order->get_meta( '_earlybird_return_status' );
    // Reagera på statusändring för retur
}, 10, 1 );

Parametrar:

ParameterTypBeskrivning
$order_idintWooCommerce order-ID

Filters

itsed_connect_earlybird_is_multi_package

Gör det möjligt att påverka logiken för att avgöra om ordern ska behandlas som en försändelse med flera paket. Som standard känner pluginet själv av om WooCommerce delar upp varukorgen i flera fraktpaket. Med detta filter kan du tvinga fram eller förhindra det beteendet.

add_filter( 'itsed_connect_earlybird_is_multi_package', function ( bool $is_multi, array $packages ): bool {
    // Tvinga beteendet till ett enda paket
    return false;
}, 10, 2 );

Parametrar:

ParameterTypBeskrivning
$is_multiboolOm pluginet har identifierat flera paket
$packagesarrayWooCommerces array med fraktpaket

Returnerar: bool – om ordern ska behandlas som en flerpaksförsändelse eller inte.

Order-meta-nycklar

Pluginet lagrar försändelsedata i WooCommerce ordermeta. Dessa nycklar kan läsas via $order->get_meta().

Utgående försändelse

Meta-nyckelTypBeskrivning
_earlybird_typestringLeveranstyp: home, box.delivery, express
_earlybird_booking_idstringEarly Birds boknings- eller order-ID
_earlybird_tracking_codestringPrimär spårningskod
_earlybird_tracking_urlstringURL till transportörens spårningssida
_earlybird_statusstringAktuell försändelsestatus, till exempel InTransit eller DeliverySucceeded
_earlybird_carrier_namestringNamn på transportör
_earlybird_box_namestringNamn på vald paketbox (gäller endast box.delivery)
_earlybird_box_addressstringAdress till vald paketbox (gäller endast box.delivery)
_earlybird_preferred_delivery_daystringKundens valda leveransdag
_earlybird_estimated_deliverystringBeräknat leveransdatum

Returförsändelse

Meta-nyckelTypBeskrivning
_earlybird_return_booking_idstringBoknings-ID för returförsändelse
_earlybird_return_tracking_codestringSpårningskod för retur
_earlybird_return_statusstringStatus för returförsändelse

Obs: Meta-nycklar som börjar med _ döljs i WooCommerces vanliga gränssnitt för ordermeta. Använd $order->get_meta( '_earlybird_...' ) för att läsa dem programmatiskt.

Exempel: Synka till externt system vid leverans

add_action( 'itsed_connect_earlybird_status_updated', function ( int $order_id ): void {
    $order  = wc_get_order( $order_id );
    $status = $order->get_meta( '_earlybird_status' );

    if ( 'DeliverySucceeded' !== $status ) {
        return;
    }

    // Meddela externt system
    wp_remote_post( 'https://erp.example.com/api/delivered', [
        'body' => wp_json_encode( [
            'order_id'      => $order_id,
            'tracking_code' => $order->get_meta( '_earlybird_tracking_code' ),
            'delivered_at'  => current_time( 'mysql' ),
        ] ),
        'headers' => [ 'Content-Type' => 'application/json' ],
    ] );
}, 10, 1 );

Exempel: Egen notifiering vid misslyckad bokning

add_action( 'itsed_connect_earlybird_booking_failed', function ( int $order_id ): void {
    $order = wc_get_order( $order_id );

    wp_mail(
        'fulfillment@example.com',
        sprintf( 'Earlybird-bokning misslyckades för order #%d', $order->get_order_number() ),
        sprintf(
            "Order #%d kunde inte bokas med Earlybird.\n\nKund: %s %s\nRedigera: %s",
            $order->get_order_number(),
            $order->get_billing_first_name(),
            $order->get_billing_last_name(),
            $order->get_edit_order_url()
        )
    );
}, 10, 1 );