Skip to main content
Tilpas Smart Send-plugin’et med WordPress-filtre og actions i din egen webshop. Hooks lader dig ændre checkout, forsendelsesvalg og bookingforløbet uden at redigere pluginets kode. Brug metafeltreferencen til at forstå gemte værdier og API’et til at hente afhentningssteder, fragtmetoder og bookinger for en WooCommerce-ordre.

Filtre og actions

Vælg det trin, som passer til din tilpasning. Hvert trin og hook nedenfor linker til den detaljerede beskrivelse og et eksempel. WooCommerces og Subscriptions’ integrationspunkter er samlet i integrationsreferencen. $is_return er false for udgående fragt og true for returfragt i de signaturer, hvor argumentet findes. En samlet booking kan kalde samme callback to gange, én gang pr. retning. Events med et Booked_Shipment-objekt giver i stedet adgang til $shipment->is_return().
smart_send_booking_completed betyder, at Smart Send har oprettet én forsendelse. Det kører, før pluginet gemmer bookingoplysningerne på WooCommerce-ordren. Brug smart_send_order_fulfilled, når du skal bruge det samlede resultat af ordreopdateringerne, også når udgående fragt lykkes, men returfragt fejler.
Signaturer angiver filterværdien først og derefter kontekstargumenter; angiver den krævede returtype. Actions har ingen brugbar returværdi. Eksemplerne er selvstændige tilpasninger, ikke en fil, der skal installeres samlet. Åbn det relevante hook, og vælg Beskrivelse for kontrakten eller Eksempel for PHP-koden og vejledningen til brug.

Tilgængelighed og priser i checkout

Filter · (bool $is_available, array $package, Smart_Send\Shipping_Method\Method $method) → boolKører efter metodens kontrol af fragtklasser og kunderoller. Returnér false for at skjule denne Smart Send-instans for pakken; returnér den modtagne værdi for at bevare eksisterende begrænsninger. true opretter ikke en pris uden for vægttabellen. Gælder checkout; foretager ingen booking eller ordreopdatering. Eksemplet begrænser desuden metoden til Danmark.
Filter · (bool $is_free, array $package, Smart_Send\Shipping_Method\Method $method) → boolKører efter kontrol af minimumsbeløb/kupon, når kurvens vægt er tilladt. true vælger Flat fee cost, som ikke nødvendigvis er nul; false bruger normal vægtprisberegning. Det tilsidesætter ikke tilgængelighed ud fra zone, rolle, klasse eller vægt. Eksemplet deaktiverer fastprisgrenen og bevarer den normale prisberegning.
Action · (Smart_Send\Shipping_Method\Method $method, array $rate) → voidKører ved afslutningen af en Smart Send-prisberegning. $rate indeholder id, label, cost, meta_data og package. Det kan køre, selv om vægtreglerne ikke gav en fragtpris, så kontrollér $method->rates, før du opretter et ekstra valg. Eksemplet lægger 10 i shoppens valuta til en eksisterende pris før WooCommerces momsberegning. Den oprindelige services metadata bevares; eksemplet booker ikke en anden transportørservice.

Afhentningssteder

Filter · (array $params) → arrayKører før API-opslag efter nærmeste afhentningssteder, når en API-nøgle er konfigureret. Nøgler: carrier, country, postal_code, street (strenge) og city (streng eller null). Returnér alle nøgler. API’et bestemmer antal resultater; begræns listen med smart_send_pickup_point_list. Søgeparametre ændrer ikke kundens ordreadresse. Eksemplet fjerner indledende/afsluttende mellemrum i postnummeret.
Filter · (Smart_Send\Delivery\Pickup_Point[] $points, array $params) → Smart_Send\Delivery\Pickup_Point[]Kører efter et ikke-tomt API-resultat er konverteret til Pickup_Point-objekter, før caching i sessionen og visning. Returnér en liste med fortløbende indeks og kompatible objekter. Pluginet fjerner objekter, der ikke matcher opslagets transportør/land. Filteret kaldes ikke ved et tomt API-resultat. Sorteringen påvirker Autovælg, når kunden ikke allerede har et kompatibelt eksplicit valg; filteret kan ikke bruges til at tilbagekalde et sådant valg.
Filter · (string $label, Smart_Send\Delivery\Pickup_Point $point) → stringKører ved formatering af et afhentningssteds tekst efter Dropdown-format. Returnér almindelig tekst, ikke HTML eller allerede escapede entities. Hver visning escaper selv teksten. Filteret ændrer visningen, ikke afhentningsstedets identitet eller gemte adresse. Identiteten består af det præcise agentnummer sammen med transportør og land.
Filter · (int $seconds) → int|floatStandard: 4 sekunder. Kører ved både opslag efter nærmeste steder og opslag på ét sted. Returnér en positiv timeout i sekunder. En højere værdi kan forlænge ventetiden i checkout; den garanterer ikke resultater. Eksemplet tillader seks sekunder.

Shipping label booking

Tilpas ordresidens fragtmetoder, forsendelsesvalg, kollifordeling og kollivægt samt modtager- og ordredata. Hooks nedenfor følger bookingforløbet frem til bookingforespørgslen og events for vellykket eller fejlet booking. Brug smart_send_delivery_details til at ændre varefordelingen og smart_send_parcel_default_weight til at tilpasse den beregnede kollivægt ved booking.
Filter · (array $carriers, WC_Order $order, bool $is_return) → arrayKører separat for listen over udgående services og returservices på ordresiden. Hver transportør har code, name, services; hver service har code, name, addons (aktuelt et tomt array). En bookingmetode er carrier_service, eksempelvis postnord_agent. Returnér den filtrerede transportørliste. Den valgte metode tilføjes altid igen, hvis den mangler, også når du returnerer []. Filteret begrænser UI’et; det er ikke adgangskontrol. Håndhæv bookingregler i smart_send_delivery_details. Eksemplet tilbyder kun PostNord til udgående fragt, med forbehold for den valgte metode.
Filter · (Smart_Send\Delivery\Delivery_Details $details, WC_Order $order, bool $is_return) → Smart_Send\Delivery\Delivery_DetailsKører én gang pr. forsøgt retning, efter gemt opsætning, fundet service og indsendte ændringer er flettet sammen, før validering af afhentningssted og booking. Returnér details-objektet. Brug set_shipping_method(), set_pickup_point() eller set_parcel_plan(); brug clear_pickup_point() til en eksplicit rydning i et delvist details-objekt. Kast Smart_Send\Booking\Exceptions\Booking_Exception for at afvise en forretningsregel før booking. Filterændringer gælder den aktuelle booking; de gemmes ikke automatisk. Se forsendelsesvalg og lagring.
Filter · (float $weight, Smart_Send\Delivery\Parcel_Spec $spec, WC_Order $order) → floatKører ved booking for hvert kolli uden eksplicit vægt. Input er den samlede produktvægt for de varer og antal, der er fordelt til kolliet, i kg, eventuelt nul. Filteret ændrer bookingens kollivægt; det ændrer hverken varefordelingen, den beregnede vægt vist på ordresiden eller den gemte kolliplan. Returnér en endelig, brugbar vægt inklusive emballage. Eksplicit vægt via Parcel_Spec::set_weight() eller ordresiden springer filteret over. Et fordelt, slettet produkt med ukendt vægt giver valideringsfejl før filteret; angiv i stedet en eksplicit positiv kollivægt. Der er intet retningsargument; filteret kan køre for både udgående og retur.
Filter · (array $shipping_address, int $order_id) → arrayKører ved læsning af ordrens leveringsadresse før fallback for telefon/e-mail og konvertering til modtagerdata. Bruger WooCommerce-adressenøgler som first_name, last_name, company, address_1, address_2, postcode, city, country og eventuelt phone/email. Returnér hele adressen. Andet argument er ordre-ID, ikke et WC_Order. Begge retninger bruger samme læsetrin; filteret gemmer ikke adressen.
Filter · (string|null $phone, WC_Order $order) → string|nullKører efter valg af leveringstelefon eller faktureringstelefon, når leverings- og faktureringsland matcher, og efter fjernelse af omgivende mellemrum. Returnér et telefonnummer eller null. Der sendes intet retningsflag. Eksemplet fjerner mellemrum uden at gætte en landekode.
Filter · (array $receiver, WC_Order $order) → arrayKører efter mapping af modtageren og fallback for telefon/e-mail. Nøgler: company, name_line1, name_line2, address_line1, address_line2, postal_code, city, country (strenge), phone og email (streng eller null). Returnér alle nøgler. Dette er pluginets data, ikke et råt HTTP-payload, og de bruges i begge retninger. Eksemplet fjerner utilsigtede mellemrum omkring en e-mail, der ikke er null.
Filter · (array[] $items, WC_Order $order) → array[]Kører efter læsning af én række pr. ordrelinje, før fordeling på kolli, i begge retninger. Bevar identiteter og gyldige antal; brug smart_send_delivery_details til fordelingen. Se strukturen for varerækker. Netto/moms er linjetotaler efter rabat, ikke stykpriser. Eksemplet fjerner mellemrum omkring toldbeskrivelsen uden at opfinde en beskrivelse for et slettet produkt.
Filter · (array $totals, WC_Order $order) → arrayKører efter beregning af ordretotaler og begrænsning af negative netto-/momsbeløb til nul. Returnér alle nøgler i skemaet for totaler. Senere værdier bruges som returneret; bevar sammenhængen og ikke-negative beløb. Ordregebyrer indgår i forsendelsestotaler, mens kollitotaler indeholder fordelte varer. Eksemplet logger kun valuta og ordretotal og bevarer bookingværdierne.
Filter · (string|null $freetext, WC_Order $order) → string|nullKører ved læsning af tekst til labelen i begge retninger. Input er kundens ordrekommentar, når Påsæt ordrekommentar på pakkelabel er aktiveret, ellers null. Returnér tekst eller null, ikke HTML. Dette styrer ikke WooCommerces ordrehistorik. Eksemplet udelader kundekommentarer på labels.
Filter · (Smart_Send\Booking\Shipment $shipment, WC_Order $order, bool $is_return) → Smart_Send\Booking\ShipmentKører efter dataudtræk og opbygning af kolli, umiddelbart før oversættelse til API-forespørgslen. Returnér et Shipment. Brug tidligere filtre til fordelings-/vægtregler, da kollivalideringen allerede er udført her. Eksemplet tilføjer kun en intern reference til udgående fragt; det opdaterer ikke ordren eller gemmer fragtindstillinger.
Action · (Smart_Send\Booking\Booked_Shipment $booked, Smart_Send\Booking\Shipment $request, WC_Order $order) → voidKører én gang pr. vellykket booket retning efter mapping af API-svaret og før lagring på ordren eller kopiering af dokumenter. Brug $booked->is_return() til retningen. Eventet betyder ikke, at hele udgående/retur-forløbet lykkedes, og en lokal dokumentkopi er endnu ikke klar. Kast ikke en exception fra callbacken: forsendelsen er allerede oprettet. Brug smart_send_order_fulfilled, når du skal bruge de gemte ordreresultater.
Action · (Smart_Send\Booking\Exceptions\Booking_Exception $exception, Smart_Send\Booking\Shipment $request, WC_Order $order) → voidKører, når bookingens API-kald kaster en håndteret HTTP-klientfejl, lige før den kastes videre som Booking_Exception. Læs getMessage(), errors() (felt → beskedliste) og response_id() (streng eller null). Det er ikke et event for alle fejl: lokal validering af fordeling, afhentningssted eller forsendelsesvalg kan fejle før API-kaldet. Der sendes ingen boolean for retningen. Eksemplet logger et response ID uden adressedata eller feltværdier.

Ordreopdateringer og samlet resultat

Filter · (bool $save, Smart_Send\Booking\Booked_Shipment $shipment, WC_Order $order) → boolKører efter vellykket booking og lagring af indsendte fragtændringer, før forsøg på dokumentkopiering og lagring af forsendelseshistorik. Standard er indstillingen Gem kopi af PDF i begge retninger. Returnér false for at springe lokale kopier over. En kopifejl giver en advarsel; forsendelsen forbliver booket, og dokumentlinks bruger Smart Send. Eksemplet lader dokumenterne blive hos Smart Send.
Filter · (string $note_html, Smart_Send\Booking\Booked_Shipment $shipment, WC_Order $order) → stringKører efter lagring af forsendelseshistorik, før den normale ordrenote tilføjes. Returnér sikker HTML/tekst eller '' for at udelade noten. Noter gemmes med WC_Order::add_order_note(), når kaldet anmoder om en note. WooCommerces historik opdateres efter genindlæsning; Smart Sends resultat kan vises med det samme. Eksemplet skriver en kort tekstnote for begge retninger.
Filter · (bool $push, Smart_Send\Booking\Booked_Shipment $shipment, WC_Order $order) → boolKører efter ordrenotetrinnet, før tracking pr. kolli videresendes til det valgfrie WooCommerce Shipment Tracking-plugin. Standard: true udgående, false retur. Det opretter ikke live trackingopdateringer og installerer ikke pluginet. false bevarer den bookede forsendelses egne trackingdata. Eksemplet deaktiverer videresendelse.
Filter · (string|false $status, Smart_Send\Booking\Booked_Shipment $shipment, WC_Order $order) → string|falseKører efter tracking. Returnér en registreret WooCommerce-status som wc-completed eller false for at bevare ordren uændret. Standard: konfigureret Ændre ordrens status efter labelgenerering for udgående; false for retur. En statusændring kan udløse WooCommerce-/tredjepartshooks og e-mails. Eksemplet forhindrer Smart Send i at ændre status i begge retninger.
Action · (WC_Order $order, Smart_Send\Fulfillment\Fulfillment_Result $result) → voidKører én gang efter alle forsøgte retninger og deres ordreopdateringer, når mindst én retning lykkedes. Det kører ikke ved et fuldstændigt mislykket forløb. Resultatet kan indeholde en vellykket udgående forsendelse og en fejlet retur. Undersøg get_outbound_shipment(), get_return_shipment(), shipments(), get_steps($shipment), get_order_note_id($shipment) og get_warnings($shipment). get_validation_errors($is_return) og get_error_details($is_return) beskriver fejl. Se kontrakterne for bookingresultater; antag ikke, at alle valgfrie trin blev udført.

Plugin settings

Filter · (string $host) → stringKører ved oprettelse af API-klienten. Standardhost: https://app.smartsend.io. Returnér kun protokol og hostname, eksempelvis https://app.smartsend.dev; klienten tilføjer selv API-versionsstien. Gælder autentificering, opslag af afhentningssteder og booking. Brug adgangsoplysninger til det valgte miljø; en stagingshop ændrer ikke denne host i sig selv.
Filter · (bool $verify) → boolStandard: true. Kører ved opbygning af WordPress’ HTTP-indstillinger. Bevar certifikatkontrol i både produktion og sandbox. Eksemplet fastholder eksplicit kontrollen; ret et ugyldigt servercertifikat eller CA-opsætningen frem for at slå kontrollen fra.
Filter · (string $message, string $level, array $context) → string|null|falseKører kun for logposter, som pluginets logningsregler tillader. $level er et WooCommerce-logniveau; $context indeholder source (smart-send-logistics) og pluginversion. Returnér en ændret besked eller null/false for at undertrykke posten. Filteret kan ikke aktivere fravalgte poster eller erstatte context ved at returnere et array. Eksemplet undertrykker kun debugbeskeder.
Filter · (string $url) → stringKører ved opbygning af Smart Send-rækkens opsætningslink på WordPress’ pluginside. Standard: https://smartsend.io/woocommerce/configuration/. Returnér en URL, ikke HTML. Det ændrer ikke API-endpointet. Eksemplet sender linket til Smart Sends lokale indstillingsside.
Filter · (string $url) → stringKører for supportlinket på WordPress’ pluginside. Standard: https://smartsend.io/support/. Returnér en URL; visningen escaper den. Eksemplet peger på en supportside i din egen shop; opret siden, før du bruger koden.
Filter · (string $notice_html) → stringKører, når Smart Send viser en opdateringsbesked for en hovedversion på pluginsiden. Returnér betroet, sikker HTML: resultatet vises som HTML uden endnu en rensning. Eksemplet tilføjer statisk vejledning. Det er et hook til opdateringsbeskeder, ikke fragt eller booking.

Datakontrakter

De seks filtre til læsning af ordredata ovenfor modtager ikke et returflag. De læser samme ordredata i begge retninger. smart_send_payload_totals og smart_send_shipment_freetext kører kun, når varedata ikke er tomme. Brug smart_send_booking_request til en afsluttende ændring for en bestemt retning.
smart_send_payload_items modtager disse nøgler på hver række:
smart_send_payload_totals modtager floats subtotal_net_amount, subtotal_tax_amount, shipping_net_amount, shipping_tax_amount, total_net_amount, total_tax_amount samt strengen currency. Subtotalen udelader fragt og inkluderer øvrige ordregebyrer. Normalt gælder subtotal + fragt = total, separat for netto og moms; begrænsningen af negative beløb kan have forrang. Beløb inklusive moms er netto + moms. Bevar sammenhængene, når du ændrer totaler.

Integrationsreference

Dette er baggrund om platformhooks, Smart Send bruger, ikke yderligere offentlige Smart Send-hooks til tilpasning.
De tre WooCommerce-navngivne checkout-hooks ovenfor er beregnet til tilpasninger. Tabellen nedenfor forklarer relevante platformhooks, som Smart Send lytter til. De overordnede kontrakter tilhører WooCommerce; at erstatte Smart Sends callbacks er ikke den understøttede tilpasningsvej.Smart Send bruger også WooCommerces registrering af Blocks-integrationer og HPOS-kompatibilitet. Disse registreringer og det eksperimentelle Blocks-filter for data-attributter er implementeringsdetaljer; brug filtrene for afhentningssteder ovenfor til fælles adfærd på tværs af checkouttyper.
Smart Send bruger disse Subscriptions-filtre med prioritet 10:Bevar filtrenes returværdier, når du tilføjer egne Subscriptions-callbacks. Integrationen følger Subscriptions 4.9+‘s API til datakopiering; test af hookkontrakten er ikke test af det kommercielle plugins planlagte fornyelser/betalingsmotor. Se kompatibilitet.
Eksemplerne er kørt mod pluginets rigtige PHP-værdiobjekter med isolerede WordPress-/WooCommerce-testdobler. Kontrollerne dækker almindelig tekst i labels, sortering/antal af afhentningssteder, automatisk kontra eksplicit vægt, kollifordeling og resultater for udgående/retur-events. De beviser ikke transportørens accept, samspillet med dine øvrige plugins eller levering til et eksternt system. Kontrollér det berørte forløb i din konfigurerede testshop før deployment.

Metafelter

Smart Send gemmer forskellige oplysninger på ordren, dens fragtlinjer og katalogprodukterne. Nøglerne nedenfor beskriver disse data og kan ikke bruges på tværs af objekterne. Brug helst de dokumenterede hooks og API’et, når du ændrer bookingadfærd. Læs metadata gennem WooCommerces CRUD-objekter, så integrationen fungerer med både HPOS og traditionel ordreopbevaring. Følg WooCommerces HPOS-vejledning ved læsning og tilsigtede opdateringer: Hent en WC_Order, brug objektets metadatametoder, og gem gennem objektet. Antag ikke, at ordrer er WordPress-indlæg.

Konfiguration på fragtlinjen

Værdierne tilhører den enkelte WC_Order_Item_Shipping, ikke WC_Order. WooCommerce kopierer dem fra den valgte Smart Send-fragtpris, når fragtlinjen oprettes. Værdierne er en kopi af metodens konfiguration på det tidspunkt, hvor fragtlinjen oprettes. Ændringer af zonens standarder omskriver ikke eksisterende fragtlinjer. En ydelse valgt til én booking i ordrepanelet overskriver heller ikke værdierne. Læs dem med $shipping_item->get_meta( $key, true ). Brug SS_SHIPPING_WC()->method_resolver(), når du skal bruge den fundne bookingydelse, inklusive den særskilte kobling for WooCommerces egen Gratis fragt.

Leveringskonfiguration og bookingresultater på ordren

Læs felterne fra en WC_Order, som du henter med wc_get_order(). Leveringskonfiguration håndteres af Smart_Send\Delivery\Order_Meta, mens bookingresultater håndteres af Smart_Send\Fulfillment\Shipment_IDs. Forsendelses-id’erne identificerer Smart Send-forsendelser. De er ikke trackingnumre, PDF-adresser eller WordPress-vedhæftnings-id’er. Historikken har én post pr. forsendelse, ikke pr. kolli, og indeholder ikke løbende transportørhændelser. Udgående fragt og retur registreres hver for sig, også når udgående booking lykkes, men retur fejler. Brug SS_SHIPPING_WC()->shipment_ids()->get( $order, false ) til det seneste udgående id, true til retur eller labels( $order ) til historikken. Id-læseren returnerer en tom streng, når der ikke er gemt et id. Se leveringsdata og lagring for forskellen på indsendte værdier, filterændringer og gemte data.
Kendte egenskaber omfatter agent_no, company, address_line1, address_line2, postal_code, city og country. Et sted kan også indeholde id, carrier, name_line1, name_line2, distance, coordinates og opening_hours. Antag ikke, at alle valgfrie egenskaber findes. Landet er en ISO 3166-1 alpha-2-kode. Koordinater har latitude og longitude, og åbningstidsrækker har day, opens og closes.Brug SS_SHIPPING_WC()->order_meta()->read( $order )->get_pickup_point() for at få en Smart_Send\Delivery\Pickup_Point eller null. Det typede objekt har getters og to_array(), så kalderen ikke behøver at afhænge af alle rå egenskaber. Brug smart_send_delivery_details til bookingændringer. At ændre det rå afhentningsnummer alene erstatter ikke opslag og validering af et sted, der passer til ydelsen.
Eksemplet viser to enheder fra ordrelinje 123 i ét kolli. Id’et er lokalt for ordren; det er hverken et produkt-id eller variations-id.
reference og varens valgfrie name er tekster til visning, ikke identiteter for ordrelinjer. Antal og ordrelinje-id’er er positive heltal. Parcel_Plan::from_array() læser det kanoniske format; fordelingen skal også kontrolleres mod den aktuelle ordres linje-id’er og antal. Ved lagring gennem Order_Meta erstattes de fire vægt- og målfelter med null. En tom specs-liste betyder ét kolli med alle varerne.Kopiér ikke arrayet uændret til en anden ordre. Ændres linjer eller antal, skal en gemt fordeling, der ikke længere passer, nulstilles før booking. Se leveringsdata og lagring for fordelingsregler og de mål, der kun gælder én booking.
Subscriptions-integrationen udelader _ss_shipping_label_id, _ss_shipping_return_label_id og _ss_shipping_labels fra fornyelsens metadata. Den bevarer genanvendelig leveringskonfiguration og knytter kollifordelingen til fornyelsens nye ordrelinje-id’er. Kan sammenhængen ikke verificeres, kan ss_shipping_order_parcels indeholde den interne indpakning unmapped_subscription_plan, som kræver en udtrykkelig nulstilling. Den markerer en fejl og er ikke et understøttet format, du skal skrive som kollifordeling._smart_send_renewal_source_item er en midlertidig intern markering på produktordrelinjer med order_id og item_id. Integrationen fjerner den efter behandlingen af de kopierede linjer. Brug den ikke som et permanent integrationsfelt._wc_shipment_tracking_items tilhører WooCommerce Shipment Tracking. Smart Send bruger udvidelsens API til tracking og udelader kopierede trackingposter fra fornyelser; Smart Send definerer ikke udvidelsens metadataformat. _vc_aio_options tilhører vConnect og læses af hensyn til kompatibilitet ved opslag af leveringsdata. Ingen af de to felter er en skrivekontrakt, som Smart Send ejer.
En værdi indsendt fra ordresiden har forrang frem for den gemte værdi, før smart_send_delivery_details kører. Efter vellykket booking gemmes det indsendte valg af afhentningssted og fordelingen af varer på kolli. Den indsendte metode samt kollivægt og mål gælder kun den aktuelle booking. En fejlet booking gemmer ikke ændringerne. Filterets returnerede objekt bestemmer, hvad der bookes, men bestemmer ikke i sig selv, hvad der gemmes.Ved en samlet udgående-/returbooking bruges den indsendte kolliplan i begge retninger, medmindre en særskilt returplan tilsidesætter den. En null eller tom plan betyder ét kolli med alle ordrevarer. Én spec uden fordelinger inkluderer også alle varer og kan angive eksplicitte mål. Flere specs kræver fuldstændig fordeling: hver ordreenhed præcis én gang, positive hele antal og ingen dublet af samme ordrelinje inden for én spec. Ukendte ordrelinje-ID’er samt for få eller for mange fordelte enheder afvises.

Produkternes toldoplysninger

Felterne tilhører en WC_Product eller WC_Product_Variation, ikke en ordre eller fragtlinje. Brug wc_get_product() og produktets get_meta() til læsning. Gem en tilsigtet ændring af produktdata med update_meta_data() efterfulgt af produktets save(). At gemme en værdi afgør ikke, om toldklassifikationen er korrekt. Booking læser katalogets aktuelle værdier. En variations værdi bruges først, medmindre den er '' eller null; så bruges hovedproduktets værdi. Pluginets produkteditor viser felterne på hovedproduktets Forsendelse-fane og tilføjer ikke en separat editor for hver variation. Felterne kopieres ikke til ordrelinjerne som historiske værdier. Et slettet katalogprodukt kan ikke levere sine tolddata. Se vejledningen til toldfelter.

API

Brug pluginets API i WordPress til at læse Smart Send-data for en eksisterende WC_Order. Smart Send og en understøttet WooCommerce-version skal være aktive. Kald eksemplerne, efter Smart Send er initialiseret på init med prioritet 0, for eksempel fra en init-callback med prioritet 10 eller et senere ordrehook. Hvis du starter med et ordre-ID, skal du hente ordren med wc_get_order($order_id) og kontrollere, at resultatet er en WC_Order. Eksemplerne bruger WooCommerces API’er til ordrer og ordrelinjer og virker derfor med HPOS. De booker ingen forsendelser og kontakter ikke Smart Send API’et. Eksempelfunktionerne bruger præfikset my_shop_; vælg dit eget præfiks i din integration.
SS_SHIPPING_WC()->order_meta()->read($order) returnerer Smart_Send\Delivery\Delivery_Details med det gemte afhentningssted og den gemte kolliplan. get_pickup_point() returnerer et Smart_Send\Delivery\Pickup_Point eller null. Se afhentningsstedets metoder for de tilgængelige felter.Hjælperen læser det gemte sted; den søger ikke efter nærliggende steder og opdaterer ikke adressen. Hvis der ikke er gemt et Smart Send-afhentningssted, kan den også læse de understøttede afhentningsmetadata fra vConnect. Et agentnummer, der er gemt alene, giver ikke et komplet afhentningsstedsobjekt. De enkelte felter kan være null.get_parcel_plan() på samme details-objekt returnerer den gemte plan eller null. Brug SS_SHIPPING_WC()->order_meta()->parcel_plan_error($order) til at skelne mellem en manglende plan og en ugyldig gemt kollifordeling; metoden returnerer en forklaring eller null. Disse gemte oplysninger fastlægger ikke fragtmetoden; brug det næste eksempel til det.
Du arbejder med to forskellige slags ID’er:
  • $order->get_shipping_methods() returnerer de WooCommerce-fragtlinjer, der er gemt på ordren. get_method_id() identificerer WooCommerce-metoden, for eksempel smart_send_shipping eller free_shipping; get_instance_id() identificerer fragtmetodens instans i fragtzonen.
  • SS_SHIPPING_WC()->method_resolver() finder ét Smart Send-service-ID for hver retning, for eksempel postnord_agent eller postnord_returndropoff. Den læser metadata på ordrens Smart Send-fragtlinje, den aktuelle tilknytning til WooCommerces gratis fragt eller understøttede tredjepartsmetoder.
resolve_outbound($order) og resolve_return($order) returnerer '', hvis der ikke kan findes en service. Hvis en Smart Send-fragtlinje ikke har en returmetode, kaster resolve_return() en Smart_Send\Booking\Exceptions\Booking_Exception; eksemplet bevarer denne forskel i return_error. is_auto_return_enabled($order) læser indstillingen for automatisk returlabel, som er gemt på fragtlinjen.Dette er de standardvalg, der udledes for ordren. De omfatter ikke ugemte valg i ordrebilledet, indsendte ændringer for en booking eller ændringer fra smart_send_delivery_details. De fortæller heller ikke, hvilken service en tidligere forsendelse faktisk blev booket med; læs det fra det Booked_Shipment, som leveres til en booking-action.
SS_SHIPPING_WC()->shipment_ids() læser de forsendelsesreferencer, der er gemt på ordren:direction er outbound eller return; booked_at er et ISO 8601-tidsstempel i UTC eller null, hvis det ikke findes. Plugin’et gemmer de seneste 50 historikposter samlet for begge retninger. Det seneste ID for hver retning gemmes særskilt, så et ID kan findes, selv om labels() er tomt. En post svarer til én forsendelse, som kan indeholde flere kolli.Dette er gemte bookingreferencer. De indeholder ikke aktuel transportørstatus, trackinglinks, dokumenter eller det komplette Booked_Shipment. Lyt til smart_send_booking_completed eller smart_send_order_fulfilled, og brug metoderne til bookingresultater, hvis du skal læse dokumenter og trackingoplysninger fra bookingresultatet. Et Fulfillment_Result beskriver det enkelte forløb, som kan have vellykket udgående fragt og fejlet returfragt; det gendannes ikke fra ordrehistorikken.
Pickup_Point har get_agent_no(), get_company(), get_address_line1(), get_address_line2(), get_postal_code(), get_city(), get_country(), get_carrier(), get_distance(), get_latitude(), get_longitude() og get_opening_hours(). Valgfrie værdier kan være null. Åbningstider er en liste af rækker med day, opens, closes: dagen er et engelsk ugedagsnavn med små bogstaver, og tider bruger HH:MM:SS. En tom liste betyder ukendte åbningstider. to_array() giver en serialiserbar repræsentation; det er ikke en tilladelse til at stole på navne eller adresser indsendt fra klienten.
Booked_Shipment har get_shipment_id(), get_carrier(), get_service_code(), is_return(), get_state(), get_booked_at(), get_tracking_code(), get_tracking_url(), parcels(), documents() og codes(). Valgfrie trackingfelter kan være null. label_document() returnerer et Shipment_Document eller null; antag ikke, at alle resultater indeholder en PDF. Dokumentets download_url() vælger den lokale kopi, når den findes, ellers Smart Send-URL’en.Fulfillment_Result::get_steps($shipment) angiver save_documents (true, false eller 'failed'), order_note (boolean), tracking (om videresendelse var ønsket) og order_status (status eller false). Trackingtrinnet beviser ikke, at en valgfri tredjepartsintegration var installeret eller sendte en e-mail.Brug get_order_note_id($shipment) til den gemte notes heltals-ID eller null. get_order_note($shipment) giver note-HTML til PHP-kode. Den serialiserbare to_array() indeholder i stedet et order_note-objekt med id, ikke note-HTML. Rækkerne har direction, status (fulfilled/failed) og shipment/steps/warnings eller en fejl. get_error_details($is_return) returnerer null eller et array med message, response_id, fields og html; behandl message som almindelig tekst, og escape output korrekt.