Zmiana nazwy wysyłki/dostawy na nazwy klas wysyłkowych

0

Witam, potrzebowałbym pomocy z kodem, który zmienia tytuł dostawy danego produktu w koszyku w sklepie w zależności od klasy wysyłkowej zamiast sztywno ustawionej nazwy wysyłki dla wszystkich klas.

Mam coś takiego:

add_filter('woocommerce_package_rates', 'change_shipping_method_name_based_on_shipping_class', 50, 2);
function change_shipping_method_name_based_on_shipping_class($rates, $package){

    $shipping_class_id = 64;
    $found = false;

    foreach( $package['contents'] as $cart_item ) {
        if( $cart_item['data']->get_shipping_class_id() == $shipping_class_id ){
            $found = true;
            break;
        }
    }

    foreach ( $rates as $rate_key => $rate ) {

        if ( 'flat_rate' === $rate->method_id ) {
            if( $found )
                $rates[$rate_key]->label = __( 'Przesyłka paletowa', 'woocommerce' );
            else
                $rates[$rate_key]->label = __( 'Kurier DPD', 'woocommerce' );
        }
    }
    return $rates;
}

ogólnie mam 3 klasy wysyłkowe - Duża, Średnia, Mała (nazwy sobie pozmieniam w późniejszym czasie), aktualnie kod faktycznie zmienia nazwę wysyłki, ale tylko na "Kurier DPD" dla wszystkich produktów niezależnie od ustawionej klasy wysyłkowej. Jeśli ktoś wie jak powinien wyglądać ten kod, to prosiłbym o pomoc, z góry dziękuje.

2

Po pierwsze, to problem może leżeć nie w kodzie a w danych. Czyli np. oczekujesz, że gdzieś tam to shipping_id przyimie wartość 64 i wedle tego co piszesz ten warunek jest zawsze spełniony.

Niestety nie znając struktury danych ciężko coś powiedzieć. Zrób sobie var_dump() otrzymanych wartości i patrz po kolei co jest nie tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1