För utvecklare
Mallfunktioner, filter och REST-läsning för teman och integrationer.
Sändningsdatat lagras som dold ordermeta vars nyckelnamn kan ändras mellan versioner. Funktionerna och filtren här är den stödda vägen in, de ändras inte utan att det står i versionshistoriken.
Mallfunktioner
Funktioner för teman och andra tillägg som vill visa sändningsdata. Varje funktion tar en order eller ett order-id, och saknas uppgiften returneras ett tomt värde av rätt typ: tom sträng, tom lista eller noll.
dt_frakt_tracking_link( $order ); // Spårningslänk, eller tom sträng
dt_frakt_tracking_number( $order ); // Spårningsnummer, eller tom sträng
dt_frakt_shipment_id( $order ); // Sändningens id hos Fraktjakt, eller 0
dt_frakt_documents( $order ); // Lista med frakthandlingarnas adresser
dt_frakt_agent( $order ); // Valt utlämningsställe, namn och adress
dt_frakt_status_label( $status ); // Läsbar etikett för en sändningsstatus
Funktionerna finns bara när tillägget är aktivt. Anropa dem bakom en function_exists-kontroll, så överlever temat att tillägget avaktiveras.
Exempel, spårningslänk på tacksidan:
add_action( 'woocommerce_thankyou', function ( $order_id ) {
if ( ! function_exists( 'dt_frakt_tracking_link' ) ) {
return;
}
$link = dt_frakt_tracking_link( $order_id );
if ( '' !== $link ) {
printf(
'<p><a href="%s">Spåra din leverans</a></p>',
esc_url( $link )
);
}
} );
Filter
| Filter | Gör |
|---|---|
| dt_frakt_add_rate | Justera eller stoppa en liverat innan den läggs i kassan. Null döljer raten |
| dt_frakt_coupon_free_rate | Avgör per liverat om en rabattkod med "Tillåt fri frakt" ska nolla den. Standard: alla |
| dt_frakt_commodity_from_cart_item | Justera eller uteslut en vara ur prisförfrågan. Null utesluter |
| dt_frakt_residential | Åsidosätt bedömningen privat- eller företagsleverans i kassan. Bokningen följer filtrets val när den använder kassans offert. Bokas frakten med en ny sökning bedöms orderns företagsfält utan filtret |
| dt_frakt_no_book_statuses | Orderstatusar som aldrig bokas. Standard: avbruten, återbetald, misslyckad, kassautkast och papperskorg |
| dt_frakt_auto_book_order | Avgör per order om den bokas automatiskt när den når statusen för automatisk bokning, och om den tas med i massbokningen. Standard: ja. Från 0.64.5 |
| dt_frakt_combined_statuses | Orderstatusar som räknas som oskickade för Samfrakt. Standard: Behandlas och Pausad |
| dt_frakt_combined_open_order | Avgör per oskickad order om nya ordrar kan samfraktas med den. Standard: ja. Från 0.64.5 |
| dt_frakt_cart_amount_in_store_currency | Räkna om varukorgens belopp till butikens valuta, för valutatillägg utan inbyggt stöd |
| dt_frakt_order_amount_in_store_currency | Samma omräkning för ordrar vid bokning |
| dt_frakt_export_reason | Exportorsak på utrikes sändningar. Standard SALE |
| dt_frakt_carrier_logo_url | Egen logotypfil för en transportör |
| dt_frakt_expose_rest | Åsidosätt REST-exponeringen per order |
| dt_frakt_emit_pickup_points | Leverera ombudslistan som pickup points-metadata även till kassor tillägget inte känner igen |
| dt_frakt_walley_delivery_methods | Justera alternativraderna innan svaret till Walley byggs |
| dt_frakt_walley_method_available | Åsidosätt om fraktmetoden Fraktjakt i Walley-kassan ska visas |
| dt_frakt_walley_hide_cart_shipping | Visa frakt i varukorgen ändå i Walley-läget |
| dt_retur_delivered_statuses | Orderstatusar som räknas som levererade i returportalen. Standard: Färdigbehandlad |
| dt_retur_client_ip | Besökarens adress för returportalens gränser. Standard: anslutningens adress |
Exempel, dölj en tjänst ur livepriserna:
add_filter( 'dt_frakt_add_rate', function ( $rate_args, $rate ) {
if ( isset( $rate['name'] ) && false !== strpos( $rate['name'], 'Varubrev' ) ) {
return null;
}
return $rate_args;
}, 10, 2 );
Exempel, låt en rabattkod med fri frakt bara gälla ombudstjänsten och låt övriga tjänster behålla livepriset:
add_filter( 'dt_frakt_coupon_free_rate', function ( $free, $rate ) {
return false !== stripos( $rate->get_label(), 'Service Point' );
}, 10, 2 );
Filtret får raten som andra argument. Tjänstens id finns i ratens metadata under dt_frakt_shipping_product_id för den som hellre matchar på id än namn.
Kustom-läget har egna filter med prefixet dt_frakt_ksa_, bland annat dt_frakt_ksa_shipping_options för att justera alternativraderna innan de serveras och dt_frakt_ksa_hide_cart_shipping för att visa frakt i varukorgen ändå.
I Walley-läget läses kundens val ur Walley Checkouts ordermeta _collector_delivery_module_data. Alternativens id börjar med dt_frakt_walley: följt av radens id, och samma id sitter på orderns fraktrad under dt_frakt_walley_option.
Läsa data utifrån
Med REST-åtkomsten påslagen får WooCommerces order-API ett dt_frakt-objekt per order, med status, spårning och nedladdningslänkar till frakthandlingarna. Autentisera med WooCommerces API-nycklar:
curl -u ck_xxx:cs_xxx https://butik.se/wp-json/wc/v3/orders/123
"dt_frakt": {
"shipment_id": "11931243",
"status": "ready_to_ship",
"tracking_number": "1005959489",
"tracking_link": "https://www.fraktjakt.se/trace/...",
"documents": ["https://butik.se/wp-json/dt-frakt/v1/order/123/document/0"],
...
}
Dokumentlänkarna pekar på butiken, inte på Fraktjakt, och hämtas med samma API-nyckel. Svaret är själva PDF-filen.
Tilläggets interna ordermeta med understrecksprefix är inte ett kontrakt. Läs via funktionerna eller REST i stället, så överlever integrationen versionsbyten.