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.
Spis treści
- 1 Przesyłanie danych do zewnętrznych integracji wysyłkowych
- 2 Filtry dostępne we wtyczce InPost
- 3 Stała wysokość ubezpieczenia przesyłki
- 4 Stała waga produktu z Allegro
- 5 Zamiana nadawcy z odbiorcą
- 6 Pobieranie etykiety z odwróconymi rolami nadawcy i odbiorcy
- 7 Zmiana treści notatek do zamówienia / wysyłanych wiadomości SMS
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.
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ą.