Fatal error: get_shipping_countrie
-
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.3Pozdrawiam
-
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.tak, 2.6.43
spróbuję zainstalować starszą wersję i dam znać@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 132Panie 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 –
dodanieif( ! isset( WC()->customer ) ) return;w tpayWoocommerceGateway.php, po 547 ln., czyli zaif (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.
@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
The topic ‘Fatal error: get_shipping_countrie’ is closed to new replies.