sameday-courier / woocommerce-plugin

Other
11 stars 15 forks source link

Denumire și adresa locker in email #110

Open xAndrewCx opened 1 year ago

xAndrewCx commented 1 year ago

Salut, exista o posibilitate de a afișa în care locker se livrează comanda in email-urile trimise automat clienților în momentul în care acesta plasează comanda?

alexboia commented 1 year ago

Salut @xAndrewCx, poti incerca cu un hook care permite interceptarea valorii "method_title" (woocommerce_order_item_get_method_title) atunci cand e citita din order item-ul care reprezinta metoda respectiva de transport:

add_filter('woocommerce_order_item_get_method_title', function($previousValue, $item) {
    $value = $previousValue;

    if ($item instanceof WC_Order_Item_Shipping) {
        $order = $item->get_order();
        $lockerDataJson = $order->get_meta('_sameday_shipping_locker_id', true);
        if (!empty($lockerDataJson)) {
            $lockerData = @json_decode($lockerDataJson, false);
            if (!empty($lockerData) && !empty($lockerData->name)) {
                $addName = ucfirst($lockerData->name);
                if (!empty($lockerData->address)) {
                    $addName .= ', ' . ucfirst($lockerData->address);
                }
                $value = $value . ' (' . $addName . ')';
            }
        }
    }

    return $value;
}, 99999, 2);

Hook-ul e apelat fie cand se apeleaza WC_Order_Item_Shipping::get_method_title(), fie cand se apeleaza direct ::get_prop('method_title'). Partea buna e ca peste tot unde se cere acest "method title" o sa ai valoarea dorita, cu locker-ul si tot ce trebuie. Partea proasta e ca peste tot unde se cere acest "method title" o sa ai valoarea dorita, cu locker-ul si tot ce trebuie, deci trebuie sa gasesti o modalitate de a discrimina intre diversele situatii. In cazul meu n-a fost nevoie, asa ca nu mi-am batut capul.