WP Desk Care - zadbaj o swój biznes online!

Sprawdzona opieka techniczna dla Twojego sklepu

InPost – opcje dla zaawansowanych użytkowników

Poniżej prezentujemy możliwości modyfikacji wtyczki dla zaawansowanych użytkowników, którzy znają podstawy PHP, HTML i CSS.

Podstawowe informacje o wtyczce znajdziesz w standardowej dokumentacji InPost – Paczkomaty, Listy, Kurier – WooCommerce.

Przesyłanie danych do zewnętrznych integracji wysyłkowych

Wtyczka umożliwia pobieranie danych związanych z utworzonymi przesyłkami i wysyłanie ich do zewnętrznych integracji wysyłkowych takich jak Baselinker czy ShipStation.

Jeżeli np. udostępniłeś swoim klientom możliwość wysyłki zamówionych produktów do wskazanego przez nich paczkomatu lub punktu odbioru InPost, informacja o wybranym punkcie wraz z jego ID zostanie automatycznie przekazana ze szczegółów zamówienia do Baselinkera:

InPost WooCommerce punkt odbioru Baselinker
Wybrany punkt odbioru InPost – Baselinker

Pobieranie danych

Pobieranie danych z przesyłek możliwe jest przez REST API WooCommerce. Do danych zamówienia  dołączane są dane przesyłek w polu fs_shiping_lines.

Pole fs_shipping_lines jest tablicą, która zawiera co najmniej jedną przesyłkę. Przy większej ilości przesyłek, będą one umieszczone w kolejności w jakiej zostały utworzone.

Dane dostępne dla zewnętrznych integracji wysyłkowych

Wtyczka umożliwia pobieranie następujących danych:

  • rodzaj integracji
  • sposób utworzenia
  • usługa
  • ID paczkomatu do odbioru
  • gabaryt przesyłki
  • sposób wysyłki
  • ubezpieczenie wysyłki
  • kwota ubezpieczenia wysyłki
  • przesyłka za pobraniem
  • kwota pobrania
  • waga przesyłki
  • wymiary przesyłki
  • sposób wysyłki
  • ID paczkomatu do wysyłki

Przykładowe dane zwracane przez wtyczkę

"fs_shipping_lines": [
{
"_integration": "paczkomaty",
"_shipping_id": "54",
"created_via": "checkout",
"_paczkomaty_usluga": "paczkomaty",
"_paczkomat_id": "BEL085",
"_paczkomat_size": "A",
"_paczkomat_sending_method": "dispatch_order",
"_paczkomat_ubezpieczenie": "1",
"_paczkomat_cod": "1",
"_paczkomat_dropoff_parcel_machine": "BBI02A",
"_paczkomat_dropoff_pop": "",
"_paczkomat_dropoff_dispatch_point": "",
"_paczkomat_customer_ref": "Zamówienie 135",
"_paczkomat_ubezpieczenie_amount": "13.53",
"_paczkomat_cod_amount": "13.53",
"_paczkomat_weight": "1",
"_flexible_shipping_status": "created",
"_paczkomat_width": "",
"_paczkomat_height": "",
"_paczkomat_length": "",
"_paczkomat_shipment_id": "218436",
}
],

Filtry dostępne we wtyczce InPost

Wraz z publikacją wersji 3.11.5 wtyczki InPost WooCommerce zostały dodane poniższe filtry:

  • woocommerce_paczkomaty_inpost_checkout_paczkomat_size
  • woocommerce_paczkomaty_inpost_checkout_paczkomat_sending_method
  • woocommerce_paczkomaty_inpost_checkout_paczkomat_dropoff_parcel_machine
  • woocommerce_paczkomaty_inpost_checkout_paczkomat_dropoff_pop
  • woocommerce_paczkomaty_inpost_checkout_paczkomat_dropoff_dispatch_point
  • woocommerce_paczkomaty_inpost_checkout_paczkomat_ubezpieczenie
  • woocommerce_paczkomaty_inpost_checkout_paczkomat_ubezpieczenie_amount
  • woocommerce_paczkomaty_inpost_checkout_paczkomat_cod
  • woocommerce_paczkomaty_inpost_checkout_paczkomat_cod_amount
  • woocommerce_paczkomaty_inpost_checkout_paczkomat_customer_ref
  • woocommerce_paczkomaty_inpost_checkout_paczkomat_weight
  • woocommerce_paczkomaty_inpost_checkout_paczkomaty_end_of_week_collection
  • woocommerce_paczkomaty_inpost_checkout_paczkomaty_sms_notification
  • woocommerce_paczkomaty_inpost_checkout_paczkomaty_email_notification

działające podczas tworzenia przesyłki przez checkout. Pozwalają one m.in. na ustawienie wybranych parametrów przesyłki “na sztywno” dla wszystkich złożonych zamówień, np. gabarytu paczkomatu (woocommerce_paczkomaty_inpost_checkout_paczkomat_size) lub wysokości ubezpieczenia (woocommerce_paczkomaty_inpost_checkout_paczkomat_ubezpieczenie_amount).

Poniżej przykładowe zastosowanie filtra woocommerce_paczkomaty_inpost_checkout_paczkomat_ubezpieczenie_amount, w celu zdefiniowania jaka ma być…

Stała wysokość ubezpieczenia przesyłki

add_filter( 'woocommerce_paczkomaty_inpost_checkout_paczkomat_ubezpieczenie_amount', 'woocommerce_paczkomaty_inpost_ubezpieczenie_amount_filter', 10, 4 );
/*
* Filter
*
* @param string|int $meta_value .
* @param array $fs_method_settings .
* @param array $package .
* @param WC_Order $order .
*
* @return float
*/
function woocommerce_paczkomaty_inpost_ubezpieczenie_amount_filter( $meta_value, $fs_method_settings, $package, $order ) {
return 5000.0;
}
add_filter( 'woocommerce_paczkomaty_inpost_checkout_paczkomat_customer_ref', 'woocommerce_paczkomaty_inpost_customer_ref_filter', 10, 4 );
/*
* Filter
*
* @param string|int $meta_value .
* @param array $fs_method_settings .
* @param array $package .
* @param WC_Order $order .
*
* @return float
*/
function woocommerce_paczkomaty_inpost_customer_ref_filter( $meta_value, $fs_method_settings, $package, $order ) {
return 'Zamówienie od klienta ' . $order->get_order_number();
}

Stała waga produktu z Allegro

Warto mieć na uwadze, że parametr wagi produktu obsługiwany jest bezpośrednio przez WooCommerce i stanowi punkt wyjściowy do wielu dalszych integracji. Dlatego, jeśli nie masz podanej wagi dla produktów importowanych z Allegro a chcesz wysyłać produkty Kurierem InPost możesz dodać filtr, który ustawi stałą wagę dla produktów. Należy pamiętać, że niewprowadzenie wagi lub ustawienie jej na sztywno, może skutkować niepożądanymi konsekwencjami i komplikacjami związanymi z poprawnym funkcjonowaniem dodatkowych pluginów. Poniższy filtr uzupełni automatycznie wagę produktu o wartość 1 kg, jeżeli ta jest pusta i nie została wprowadzona wcześniej.

add_filter( 'woocommerce_product_get_weight', 'custom_get_weight', 10, 2 );
function custom_get_weight( $weight, $product ) {
if ( !empty( $weight ) ) {
return $weight;
}
return 1;
}

Zamiana nadawcy z odbiorcą

Istnieje możliwość zamiany domyślnego nadawcy z odbiorcą za pomocą filtra woocommerce_paczkomaty_inpost_shipment_data. Filtr ten otrzymuje na wejściu dane przesyłki, które wtyczka wysyła do API oraz obiekt przesyłki WPDesk_Flexible_Shipping_Shipment_Paczkomaty, z którego oprócz danych ustawionych w metaboxie można pobrać także dane zamówienia.

Klient może wtedy zostać nadawcą, a sklep odbiorcą przesyłki. Rozwiązanie to znajduje zastosowanie np. w sytuacji gdy sklep funkcjonuje jako skup i to klienci nadają do niego przesyłki z przedmiotami.

Użycie filtra:

/*
* @param stdClass $shipment_data .
* @param WPDesk_Flexible_Shipping_Shipment_Paczkomaty $order .
*
* @return stdClass
*/
function modify_paczkomaty_inpost_shipment_data( $shipment_data, $shipment ) {
$order = $shipment->get_order();
return $shipment_data;
}
add_filter( 'woocommerce_paczkomaty_inpost_shipment_data', 'modify_paczkomaty_inpost_shipment_data', 10, 2 );

Przykładowe zastosowanie:

/*
* @param stdClass $shipment_data .
* @param WPDesk_Flexible_Shipping_Shipment_Paczkomaty $order .
*
* @return stdClass
*/
function replace_sender_and_receiver_in_inpost_shipment_data( $shipment_data, $shipment ) {
$shipment_data->sender = $shipment_data->receiver;
$receiver = new stdClass();
$receiver->address = new stdClass();
$receiver->address->street = 'ul. Przykladowa';
$receiver->address->building_number = '23/1';
$receiver->address->city = 'Warszawa';
$receiver->address->post_code = '01-231';
$receiver->address->country_code = 'PL';
$receiver->company_name = 'Nazwa firmy';
$receiver->first_name = 'Jan';
$receiver->last_name = 'Kowalski';
$receiver->email = '[email protected]';
$receiver->phone = '123456789';
$shipment_data->receiver = $receiver;
return $shipment_data;
}
add_filter( 'woocommerce_paczkomaty_inpost_shipment_data', 'replace_sender_and_receiver_in_inpost_shipment_data', 10, 2 );

Pobieranie etykiety z odwróconymi rolami nadawcy i odbiorcy

Po odwróceniu ról nadawcy i odbiorcy za pomocą opisanego wcześniej filtra woocommerce_paczkomaty_inpost_shipment_data istnieje również możliwość pobrania etykiety nadawczej uwzględniającej powyższą zmianę ról nadawcy z odbiorcą, po jej wygenerowaniu, gdy będzie dostępna. Poniżej zamieszczony kod może być np. również bazą do wysyłki mailem etykiety zwrotnej do klienta:

/* Inpost - kod umożliwiający pobranie etykiet na zmianie statusu */
add_action( 'flexible_shipping_shipment_confirmed', 'get_inpost_label' );
/*
* Get InPost label
* @param WPDesk_Flexible_Shipping_Shipment $shipment
* @throws Exception
*/
function get_inpost_label( $shipment ) {
if ( $shipment->get_integration() === 'paczkomaty' && $shipment->label_avaliable() ) {
$order = $shipment->get_order();
/** @var WPDesk_Flexible_Shipping_Shipment_Paczkomaty $shipment */
$label = $shipment->get_label();
$label_pdf = $label['content'];
}
}

W zmiennej $order znajdują się dane dotyczące zamówienia, z których pobrany zostać może adres email, zmienna $label_pdf zawiera natomiast PDF z etykietą.

Zmiana treści notatek do zamówienia / wysyłanych wiadomości SMS

Za pomocą hook’a woocommerce_new_order_note_data istnieje możliwość modyfikacji dodawanej do zamówienia notatki po nadaniu przesyłki i wygenerowaniu etykiety, zawierającej link trackingowy. Informacja ta jest również wysyłana do klienta, a możliwość jej zmiany ma szczególne znaczenie w przypadku korzystania z dodatkowych systemów powiadomień drogą SMSową.