Tovább a tartalomhoz

WooCommerce-átvitel: hibaelhárítás

A sikertelen rendelések naplója, a gyakori hibák megoldása, az átvitel visszaállítása, a tesztkörnyezeti próba és a gyakori kérdések.

A Migrator tűri a rossz adatot: az egyes rekordok hibáját rögzíti, és nem állítja le a futást. Ez a fejezet megmutatja, hogyan találod meg ezeket a hibákat, hogyan ellenőrizheted az épséget az átvitel után, és hogyan állsz helyre a gyakori problémákból.

Ha egy rendelés átvitele elbukik (sérült rekord, hiányzó vásárlói e-mail-cím, hibás rendelési tételek), a hiba a _fluent_cart_woocommerce_failed_logs WordPress-beállításba kerül, a futás pedig nem áll le. A termékeknél ugyanez igaz: egyetlen olvashatatlan termék rögzítésre kerül, a katalógus-szakasz pedig folytatódik.

Terminál
wp fluent_cart_migrator migrate_from_woo --log

Minden bejegyzés a WooCommerce-rendelés azonosítóját és a hibaüzenetet mutatja. A hibák a CLI-futás közben figyelmeztetésként is megjelennek, így menet közben látod őket, nem csak a végén.

A befejező képernyő egy lenyitható Hibanapló szakaszt mutat. Kattints rá: ugyanazt az adatot látod, mint a CLI --log kimenetében.

Mit tegyél egy sikertelen bejegyzéssel

Szekció neve “Mit tegyél egy sikertelen bejegyzéssel”
  1. Nyisd meg az eredeti rendelést a WooCommerce-ben (WooCommerce → Rendelések).
  2. Hasonlítsd össze a hibaüzenettel. Az ok általában egyértelmű: hiányzó számlázási e-mail-cím, törölt termékhivatkozás, vagy olyan rendelés, amelynek nincs használható tétele.
  3. Javítsd ki a forrásadatot a WooCommerce-ben.
  4. Futtasd újra a rendelések szakaszát: wp fluent_cart_migrator migrate_from_woo --payments. Az már átvitt rendeléseket kihagyja.

Rendelések nem regisztrált egyedi állapotban

Szekció neve “Rendelések nem regisztrált egyedi állapotban”

A naplóban egy bejegyzéstípus nem adathiba. A WooCommerce csak azokat a rendeléseket tudja visszaadni, amelyek állapota jelenleg regisztrált, tehát ha egy egyedi rendelési állapotokat hozzáadó bővítményt kikapcsoltak, a rendelései egyáltalán nem kérdezhetők le. Hogy ne maradjanak elszámolatlanul, a Migrator mindegyiket felsorolja a rendelésszámával, állapotával, dátumával, végösszegével, a vásárló e-mail-címével és egy szerkesztési linkkel.

Megoldás: kapcsold vissza az állapotot regisztráló bővítményt, majd futtasd újra a rendelések szakaszát. A rendelések újra lekérdezhetők lesznek, és rendesen átkerülnek.

Minden szakasz ellenőrzi, hogy a WooCommerce be van-e töltve. Ha ezt látod a CLI-ben vagy a varázslóban, a WooCommerce ki van kapcsolva: aktiváld, és futtasd újra. A WooCommerce-nek az egész átvitel alatt aktívnak kell maradnia, mert a Migrator az API-ján át olvas.

„Migration requires WooCommerce 3.0 or later”

Szekció neve “„Migration requires WooCommerce 3.0 or later””

Az összeférhetőségi ellenőrzés a régebbi verziókat blokkolja. A WooCommerce 3.0-ban jelent meg a CRUD API (wc_get_products, wc_get_orders), amelyre a Migrator épít, hogy független maradjon a tárolástól.

Megoldás: frissítsd a WooCommerce-t, majd térj vissza a varázslóhoz.

„No WooCommerce products found. Nothing to migrate.”

Szekció neve “„No WooCommerce products found. Nothing to migrate.””

A Migrator üres katalóguson nem hajlandó futni. Ha valóban vannak termékeid, ellenőrizd, hogy nincsenek-e mind a kukában: az átvitel a publish, private és draft állapotú termékeket olvassa.

A leállás szinte mindig szerveroldali időtúllépés: a PHP max_execution_time értéke megszakította a kérést, vagy a tárhely folyamatfelügyelője leállított egy hosszan futó szkriptet.

Megoldás a varázslóból: frissítsd az oldalt, és indítsd újra az átvitelt. Az utolsó befejezett oldaltól folytatja, és a kész lépéseket kihagyja.

Megoldás parancssorból: a CLI teljesen megkerüli a HTTP-időtúllépéseket. Ha a varázsló újra és újra elakad, váltsd át:

Terminál
wp fluent_cart_migrator migrate_from_woo --all

Nagy boltoknál a PHP-nak elfogyhat a memóriája a termékek vagy a rendelések szakaszában. A Migrator a kötegek között már üríti a WordPress futásidejű gyorsítótárát, és leállítja a köteget, ha a memóriahasználat eléri a korlát nagyjából 70%-át, de egy nagyon alacsony korlát egyetlen köteg alatt is kimerülhet.

Megoldás: adj a PHP-nak több mozgásteret az átvitel idejére:

Terminál
wp --exec='ini_set("memory_limit","1G");' fluent_cart_migrator migrate_from_woo --all

Ha még így is eléred a korlátot, az --all helyett futtasd külön a szakaszokat, hogy minden hívás saját memóriakörnyezetet kapjon.

A FluentCart termékszáma nem mindig egyenlő a WooCommerce-ével, és ez többnyire helyes:

  • A változatok nem külön termékek. A WooCommerce-változatok FluentCart-változatokká válnak a szülőtermékben, nem önálló tételek.
  • A kukában lévő termékek nem kerülnek át. Csak a publish, private és draft állapotúak.
  • A sikertelen termékek naplózva vannak. Ha a különbség nagyobb, mint amit az előző kettő megmagyaráz, nézd meg a hibanaplót.

A rendelési tételek a semmire mutatnak

Szekció neve “A rendelési tételek a semmire mutatnak”

Ez akkor történik, ha a rendelések szakasza a termékek előtt futott. A rendelési tételek a termékeket a termékek lépése által írt azonosítótérképen át oldják fel.

Megoldás: futtasd előbb a --products kapcsolót, majd a --payments-et újra. Ha a termékek már átkerültek, a rendelések újrafuttatása biztonságos: a rendelési rekordok idempotensek.

Egy rendelés végösszege nem egyezik a WooCommerce-szel

Szekció neve “Egy rendelés végösszege nem egyezik a WooCommerce-szel”

Mindig egyeznie kell. A Migrator a rendelés végösszegét az összetevőiből (tételek, adó, szállítás, szállítási adó, díjak, mínusz kedvezmények) újraépíti, és egyezteti a WooCommerce rögzített összegével: a pozitív különbség kézi kedvezményként, a negatív díjként kerül rögzítésre. Ha egy végösszeg valóban eltér, nézd meg, hogy egy harmadik fél bővítmény nem a megjelenítéskor adott-e hozzá összeget ahelyett, hogy a rendelésen tárolta volna: annak az értéknek nincs mit átvinni.

A kuponkorlátozások üresen jöttek át

Szekció neve “A kuponkorlátozások üresen jöttek át”

A kupon termék- és kategóriakorlátozásai átképezve vannak, nem másolva. Az a korlátozott termék, amely nem került át (mert a kukában volt, vagy a termékek szakasza még nem futott), kikerül a listából, nem marad nem létező azonosítóra mutatva.

Megoldás: futtasd előbb a --products kapcsolót, majd a --coupons-t újra. A kuponok kód alapján frissülnek, ezért az újrafuttatás biztonságos.

Az átvitt rendeléseken hiányzik az adó

Szekció neve “Az átvitt rendeléseken hiányzik az adó”

Az adóátvitel attól függ, hogy a WooCommerce-ben be voltak-e kapcsolva az adók. Ha ki voltak kapcsolva, az adólépés figyelmeztetéssel kimarad, és a rendelések adósorainak nincs FluentCart-kulcsa, amelyre kapcsolódjanak.

Megoldás: kapcsold be az adókat a WooCommerce-ben, futtasd a --tax_rates kapcsolót, majd a --payments-et újra, hogy az adósorok feloldódjanak.

Az előfizetések számlázásszámai furcsának tűnnek

Szekció neve “Az előfizetések számlázásszámai furcsának tűnnek”

Az újraszámolási lépés után néha egy előfizetés számlázásszáma nem azt mutatja, amit vártál. Ez általában azt jelenti, hogy a megújító rendelések a szülő előfizetésük előtt kerültek át, ezért a kapcsolat utólag készült.

Megoldás: futtasd újra az újraszámolást:

Terminál
wp fluent_cart_migrator migrate_from_woo --recount

Az újraszámolás az árván maradt megújítási tranzakciókat visszakapcsolja, mielőtt újraépíti a számlázásszámokat, ezért mindig az utolsó szakasznak kell lennie.

Az előfizetésnél „Kézi” beszedés áll, pedig automatikus terhelést vártál

Szekció neve “Az előfizetésnél „Kézi” beszedés áll, pedig automatikus terhelést vártál”

Ez szándékos döntés, nem hiba. A FluentCart csak akkor jelöl egy átvitt előfizetést automatikusan terhelődőnek, ha valóban terhelhető tokent örököl. A pontos szabályokat és a teendőket az előfizetések és megújítások fejezet írja le.

A Stripe-előfizetések az átvitel után nem terhelhetők

Szekció neve “A Stripe-előfizetések az átvitel után nem terhelhetők”

Szinte mindig a rendelés módja nem egyezik. A WooCommerce nem rögzít rendelésenként teszt/éles jelölőt, ezért a Migrator a módot az átjáró aktuális beállításából következteti ki. Ha a Stripe-beállításaid a múltban átkapcsolódtak, egyes rendelések rossz módba kerülnek, a FluentCart pedig az API-kulcsokat mód szerint választja, így a token elérhetetlenné válik.

Megoldás: ellenőrizd a módot az átvitt rendelések egy mintáján. Ha az egész futásra korrigálni szeretnéd a következtetést, az átvitel előtt adj hozzá egy szűrőt:

add_filter('fluentcart_migrator_woo_order_mode', function ($mode, $context) {
// $context['order'] és $context['gateway'] elérhető
return $mode;
}, 10, 2);

Ezután (tesztkörnyezetben) állítsd vissza az átvitelt, és futtasd újra.

A vásárlók megvannak a WooCommerce-ben, de a FluentCartban nem

Szekció neve “A vásárlók megvannak a WooCommerce-ben, de a FluentCartban nem”

A vásárlók a rendelésekből jönnek létre. Az olyan regisztrált fiókokhoz, amelyek sosem rendeltek, külön lépés kell:

Terminál
wp fluent_cart_migrator migrate_from_woo --missing-customers

A varázslóban a Hiányzó vásárlók jelölőnégyzet csak akkor jelenik meg, ha ilyen fiókokat talál.

A letölthető fájlok nem töltődnek le

Szekció neve “A letölthető fájlok nem töltődnek le”

A helyi fájlok az átvitel közben a FluentCart tárhelykönyvtárába másolódnak. A távolról tárolt fájlok megtartják az eredeti URL-jüket.

Megoldás: nyisd meg a terméket a FluentCartban, és nézd meg a Letölthető anyag(ok) mezőt. Ha egy távoli URL már nem elérhető, vagy egy helyi fájl a feltöltési könyvtáradon kívül volt, csatold újra kézzel.

Az átvitt rendeléseken egyes IP-címek üresek

Szekció neve “Az átvitt rendeléseken egyes IP-címek üresek”

Ez szándékos. Amikor a rendelések szakasza befejeződik, minden IP-cím, amely több mint 30 átvitt rendelésen szerepel, törlődik: egy ennyire gyakori cím átjáróé vagy proxyé, nem vásárlóé.

Ha egy tesztkörnyezeti átvitel rosszul sikerült, és tiszta lappal akarsz kezdeni, a Migrator tisztán visszaállít. Ez a fejlesztői módhoz kötött: a visszaállítás működéséhez definiálnod kell a FLUENT_CART_DEV_MODE állandót a wp-config.php-ban. Ez szándékos: a visszaállítás romboló, és az állandó mögé zárása lehetetlenné teszi, hogy véletlenül kiváltsd a WordPress-adminból.

Éles oldalon soha ne futtasd a visszaállítást. A visszaállítás eldobja és újra létrehozza a FluentCart adatbázis-tábláit, és törli az átvitt termékbejegyzéseket. Csak tesztkörnyezetben, helyi vagy más elszigetelt környezetben használd.

Terminál
wp fluent_cart_migrator migrate_from_woo --reset

Megerősítést kér, mielőtt bármit megsemmisítene. Átnézett szkriptekben a WP-CLI szokásos --yes kapcsolójával kihagyhatod a kérdést.

Ha a fejlesztői mód aktív, és a varázsló korábbi átvitelt észlel, az átvitel előtti áttekintő képernyőn az „Előző átvitel észlelve” értesítésben megjelenik egy Átvitel visszaállítása link. Rákattintva megerősítést kér, majd ugyanazt a visszaállítást futtatja.

A visszaállítás alapos: mindent visszagörget, amit az átvitel létrehozott, hogy tiszta lappal kezdhess.

WordPress-beállítások, amelyek törlődnek:

  • __fluent_cart_woocommerce_migration_steps (a lépések és oldalak előrehaladása),
  • _fluent_cart_woocommerce_failed_logs (rendelésenkénti hibarekordok),
  • az átviteli összesítő.

Adatbázis-séma:

  • A FluentCart minden táblája eldobódik és újra létrejön.

Átvitt bejegyzésadatok:

  • A FluentCart-termékbejegyzések és a segédadataik törlődnek.
  • Az azonosítótérkép-segédadatok mindkét oldalról eltűnnek (_fct_migrated_id, _wc_migrated_from, __wc_migrated_variation_maps).

Az eredeti WooCommerce-adataidhoz soha nem nyúl. Csak a FluentCart-oldali rekordok és a leképezési segédadatok érintettek.

A visszaállítás minden FluentCart-adatot töröl, nem csak a WooCommerce-importot. Mivel a visszaállítás újra létrehozza a FluentCart sémáját, minden más is odavész, ami azon az oldalon a FluentCartban él. Tesztkörnyezeti másolaton pontosan ezt akarod. Valódi FluentCart-adatot tartalmazó oldalon nem.

Ha a visszaállítás azt jelzi, hogy a táblákat eldobta, de nem tudta újra létrehozni, aktiváld újra a FluentCartot (vagy futtasd az adatbázis-migrációját) a séma helyreállításához, mielőtt újra próbálod. A Migrator ezt kifejezetten ellenőrzi, és jelzi, nem jelent hamis sikert.

Egy tipikus próbaciklus így néz ki:

  1. Klónozd az éles oldalt a tesztkörnyezetbe, a WooCommerce-adatbázissal együtt.
  2. Kapcsold be a fejlesztői módot a tesztkörnyezet wp-config.php fájljában.
  3. Telepítsd a FluentCartot és a Migrator kiegészítőt.
  4. Futtasd le a teljes átvitelt a varázslóval vagy a CLI-vel.
  5. Ellenőrizd szúrópróbaszerűen a termékeket, kategóriákat, változatokat, rendeléseket, előfizetéseket és kuponokat.
  6. Jegyezd fel, mi igényel forrásadat-tisztítást az éles futás előtt (ismétlődő cikkszámok, hibás termékek, törölt termékekre hivatkozó rendelések).
  7. Állítsd vissza az átvitelt: wp fluent_cart_migrator migrate_from_woo --reset.
  8. Tisztítsd meg a forrásadatot.
  9. Futtasd újra a teljes átvitelt.
  10. Ha az eredmény a tesztkörnyezetben jó, ismételd meg az éles oldalon (kikapcsolt fejlesztői móddal).

A következmények nélküli ismétlés az egyszeri átvitelből szabályozott, követhető folyamatot csinál.

Módosítja vagy törli az átvitel a WooCommerce-adataimat?

Szekció neve “Módosítja vagy törli az átvitel a WooCommerce-adataimat?”

Soha. A Migrator csak olvas a WooCommerce-ből. Az eredeti adataid érintetlenek, ezért a teljes átvitelt az éles WooCommerce-boltoddal összevetve ellenőrizheted, mielőtt bármit átállítanál.

Igen. A Migrator a WooCommerce CRUD API-ján át olvas, nem közvetlenül a táblákat kérdezi, ezért a HPOS-szal és a régi bejegyzéstáblákkal ugyanúgy viselkedik. Nem kell tudnod, melyiket használod.

Mi van, ha az átvitel félúton megszakad?

Szekció neve “Mi van, ha az átvitel félúton megszakad?”

Egyszerűen indítsd újra. A Migrator követi a saját előrehaladását: kihagyja a kész szakaszokat, a termékeket az utolsó befejezett oldaltól, a rendeléseket az utolsó befejezett kötegtől folytatja. Duplikált adat nem keletkezik.

Igen. Minden szakasz idempotens. A termékek újrafuttatása az azonosítótérkép alapján frissíti a már átvitt termékeket, a kuponoké kód alapján a meglévő kuponokat, az újraszámolás pedig mindig az aktuális adatokból számol újra. Az újrafuttatás nem hoz létre duplikált rekordot.

Kell valamit tennie a meglévő vásárlóimnak?

Szekció neve “Kell valamit tennie a meglévő vásárlóimnak?”

A fiókjaik, rendelési előzményeik, címeik és előfizetéseik mind átkerülnek, és ugyanazokkal a WordPress-adatokkal lépnek be. Az egyetlen csoport, amely változást vehet észre, azok az előfizetők, akiknek a megújítása kézi beszedésre kerül: lásd az előfizetések és megújítások fejezetet.

Az aktív előfizetések automatikusan megújulnak tovább?

Szekció neve “Az aktív előfizetések automatikusan megújulnak tovább?”

Egyesek igen, másoknak a vásárlónak kell kifizetnie minden megújítást. A WooCommerce Subscriptions saját ütemtervet vezet, amelyhez nincs átjáró oldali előfizetés, amit örökölni lehetne, ezért az ütemtervet a FluentCart veszi át. Hogy automatikusan is terhelhető-e, az a mentett fizetési tokentől függ. Élesítés előtt olvasd el teljesen az előfizetések és megújítások fejezetet.

A WooCommerce-átvitelhez magához nem. A WooCommerce magjában nincs licenckezelő modul, így a csak Pro-ban elérhető licencátvitel itt nem érvényes.

A bolt méretétől függ:

  • Kis boltok (néhány száz rendelés): két-öt perc.
  • Közepes boltok (több ezer rendelés): tíz-harminc perc.
  • Nagy boltok (több tízezer rendelés): harminc perc és pár óra között.

A CLI közepes és nagy boltoknál következetesen gyorsabb a varázslónál, mert elkerüli a HTTP-időtúllépéseket és a kötegenkénti körutakat.

Maradjon aktív a Migrator bővítmény utána?

Szekció neve “Maradjon aktív a Migrator bővítmény utána?”

WooCommerce-átvitelnél nincs fenntartandó kompatibilitási réteg, tehát a kiegészítő a kész és ellenőrzött átvitel után nem csinál semmit. Tartsd aktívan, amíg ellenőrzöl, és szükséged lehet a naplókra vagy egy újrafuttatásra, utána kikapcsolhatod.

Ha ellenőrizted az átvitelt, újrakötötted az átjárókat, és a WooCommerce-oldalakat, rövidkódokat és blokkokat lecserélted a FluentCart megfelelőire. Ha előfizetéseket árulsz, a WooCommerce-t a következő megújítási dátum előtt kapcsold ki, hogy ne két számlázómotor működjön ugyanazon az ütemtervön. A WooCommerce-adatbázistáblákat hagyd a helyükön egy ideig tartaléknak: szinte semmibe nem kerülnek, és a Migrator nem módosította őket.

  • Nézd meg a sikertelen rendelések naplóját: wp fluent_cart_migrator migrate_from_woo --log.
  • Nézd meg előre a forrásadatot: wp fluent_cart_migrator migrate_from_woo --stats.
  • Próbáld ki tesztkörnyezetben bekapcsolt fejlesztői móddal.
  • Nyiss támogatási jegyet a FluentCart-fiókodon át.

További fejezetek: a varázsló lépései, mi kerül át, és mi nem, előfizetések és megújítások, WP-CLI.

Készült:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások