• Resolved mrernie

    (@mrernie)


    Witam,

    po aktywowaniu wtyczki pojawia się komunikat, strona przestaje działać:

    Fatal error: Call to a member function get_shipping_countries() on null in /public_html/wp-content/plugins/woocommerce/includes/shipping/legacy-flat-rate/includes/settings-flat-rate.php on line 47

    w czym może być problem?

    WP 4.9.7
    WOO 3.4.3

    Pozdrawiam

Viewing 9 replies - 1 through 9 (of 9 total)
  • Plugin Author tpay.com

    (@transferujpl)

    Dzień dobry
    Prosimy o informację, czy bład dotyczy pluginu w wersji 2.6.43?
    Błąd, który Pan opisał występuje w niektórych instalacjach woocommerce i zgłosiliśmy go do twórców tej platformy fatal-error-wc_shipping-get_shipping_methods
    Jeżeli korzysta Pan z najnowszej wersji naszej wtyczki, a bład nadal występuje, do czasu rozwiązania problemu prosimy usunąć aktualnie zainstalowany moduł, a następnie pobrać ze strony https://wordpress.org/plugins/woocommerce-transferujpl-payment-gateway/advanced/ (sekcja PREVIOUS VERSIONS) wersję 2.6.2 i zainstalować ją ręcznie, korzystając z menu Wtyczki->dodaj nową->Wyślij wtyczkę na serwer.

    Thread Starter mrernie

    (@mrernie)

    tak, 2.6.43
    spróbuję zainstalować starszą wersję i dam znać

    Plugin Author tpay.com

    (@transferujpl)

    @mrernie Napisaliśmy dodatkowe zabezpieczenie w module i wydaliśmy aktualizację do wersji 2.6.44. Prosimy o testy czy problem ustąpił. Będziemy wdzięczni za informację zwrotną 🙂

    @transferujpl, nie za bardzo…

    Fix na szybko, przed pobraniem metod wysyłki
    if( ! isset( WC()->customer ) ) return;

    @transferujpl Kolejna aktualizacja ( 2.6.45) i powtórka z rozrywki.
    Trzeci raz już klientce stronę kładzie na łopatki i muszę wtyczkę poprawiać. :/

    PHP Fatal error: Call to a member function get_shipping_countries() on null in public_html/wp-content/plugins/woocommerce/includes/shipping/legacy-local-pickup/class-wc-shipping-legacy-local-pickup.php on line 132

    Plugin Author tpay.com

    (@transferujpl)

    Panie Pawle, problem jest bardziej złożony i jak do tej pory nie otrzymaliśmy wyjaśnień od twórców wtyczki Woocommerce, z której metody korzystamy. Dodatkowo trudno nam naprawić problem, którego nie udaje się odtworzyć w środowisku testowym oraz występuje tylko u kilku sprzedawców, podczas gdy u blisko 2000 nie.
    Jesteśmy otwarci na propozycje, dlatego uprzejmie prosimy o szczegółowe informacje, jakie zmiany Pan wprowadza oraz czy po tych zmianach funkcjonalność pobierania listy metod wysyłki w konfiguracji modułu działa prawidłowo.

    @transferujpl, za sprawą przerwy urlopowej nie mam możliwości wgryźć się głębiej w problem. Początkowo również nie mogłem go zreplikować – teraz z grubsza wiem w czym rzecz.
    Problemem są pozostałości, przestarzałe opcje wysyłki jakie były w WP < 2.6.
    W przypadku z jakim się spotkałem, pomimo aktualnej wersji WC i poprawnie skonfigurowanych Stref Wysyłki, wisiała jeszcze stara opcja “Odbiór osobisty (przestarzała)” – czyli aby zreplikować problem, należało by np. pod wersją WC 2.5.5 ustawić opcje wysyłki, następnie zaktualizować WC. Bądź ręcznie w tabeli wp_options wyedytować opcję woocommerce_local_pickup_settings i zmienić jej wartość enabled na yes (uwaga na serializację).
    W momencie, gdy stara opcja jest aktywna, a Woo przełączy się w tryb legacy, wtyczka zaczyna się wykładać rzucając fatalem jak w przykładach powyżej.
    Z braku czasu nie wnikałem, co dokładniej w trybie legacy tam się wyprawia z zależnościami, niemniej łatka jaką pierwotnie podałem w omawianym przypadku –
    dodanie if( ! isset( WC()->customer ) ) return; w tpayWoocommerceGateway.php, po 547 ln., czyli za if (class_exists('WC_Shipping')) {
    – doraźnie rozwiązywała problem. Wtyczka wracała do życia, nie rzucała już fatala i działała raczej poprawnie.

    Zatem docelowo wystarczy wyłączyć przestarzałe opcje wysyłki. Ale warto by mimo wszystko zabezpieczyć, by tryb zgodności nie wykładał tutaj wtyczki.

    Plugin Author tpay.com

    (@transferujpl)

    @adpawl zweryfikowaliśmy występowanie konfliktu z ustawieniem woocommerce_local_pickup_settings i istotnie, okazało się ono źródłem problemu.
    Dodaliśmy zabezpieczenie sprawdzające istnienie tego ustawienia oraz jego wartość, dzięki czemu problem nie powinien już występować, po aktualizacji do wersji 2.6.46.
    Dziękujemy za wkład w rozwiązanie problemu.

    @transferujpl, no i fajnie.
    Tak tylko dla porządku zwrócę uwagę, że @mrernie ma analogiczny problem z legacy_flat_rate – więc prawdopodobnie wszystkie stare opcje wysyłki dotyka ten sam problem. Warto by więc wszystkie sprawdzić, czyli obok woocommerce_local_pickup_settings również woocommerce_flat_rate_settings, woocommerce_free_shipping_settings, woocommerce_international_delivery_settings i woocommerce_local_delivery_settings

Viewing 9 replies - 1 through 9 (of 9 total)

The topic ‘Fatal error: get_shipping_countrie’ is closed to new replies.