# WooCommerce-rendelések migrálása

> WooCommerce-rendelések átvitele egy másik webhelyre exportcsomaggal, a vásárló- és terméklinkelés hibáinak kezelésével.

A rendeléseket a forráswebhelyen exportálod (**All Export → Új exportálás**, típus: **WooCommerce-rendelések**), a csomagot pedig a célwebhelyen importálod (**All Import → Új importálás**). Mindkét webhelyen kell a WooCommerce export-, illetve import-bővítménye, a WP All Export és a WP All Import mellett.

Ha vásárlókat és termékeket is migrálsz, előbb azokat vidd át, utána a rendeléseket: [WooCommerce-vásárlók migrálása](https://hub.hellowp.io/hu/plugins/wpai-woocommerce-add-on/migralas-vasarlok/), [WooCommerce-termékek migrálása](https://hub.hellowp.io/hu/plugins/wpai-woocommerce-add-on/migralas-termekek/).

## 1. lépés: rendelésexport létrehozása

1. A forráswebhelyen nyisd meg az **All Export → Új exportálás** oldalt.
2. Válaszd a **WooCommerce-rendelések** típust. Az oldal kiírja az exportálható rendelések számát.
3. Ha csak bizonyos rendeléseket akarsz átvinni, használd a **Szűrési opciók hozzáadása** részt.
4. Kattints az **A(z) Rendelések áttelepítése** gombra a teljes migrációhoz, vagy az **Exportfájl testreszabása** gombra, ha magad választanád ki az oszlopokat.

![A WooCommerce-rendelések típus kiválasztva, az áttelepítés gombbal](./kepek/migralas-rendeles-export-tipus.webp)

*A WooCommerce-rendelések típus kiválasztva, az áttelepítés gombbal* (https://minta-bolt.hu/wp-admin/admin.php?page=pmxe-admin-export)

Az oldal megmutatja, hány rendelést exportál.

## 2. lépés: az exportfájl beállítása (nem kötelező)

Ha az **Exportfájl testreszabása** gombot választottad, a Húzás és ejtés felületen válaszd ki az oszlopokat. Legalább azokat az oszlopokat vedd be, amelyek a sikeres importhoz kellenek a célwebhelyen.

Utána az **Exportálás beállításai** oldalon az **Ütemezési beállítások** és a **Speciális beállítások** módosíthatók, de legtöbbször az alapértékek jók. Kattints a **Megerősítés és exportálás futtatása** gombra, majd a végén töltsd le a **Csomag**ot. A csomag az összes exportált rendelést és az import beállításait is tartalmazza.

## 3. lépés: a csomag importálása

1. A célwebhelyen nyisd meg az **All Import → Új importálás** oldalt, és töltsd fel a csomagot.
2. Az **Ugrás az importbeállításokhoz** gombbal a csomag mindent magától leképez. Ha módosítanád a leképezést, kattints az **Import beállítása** gombra, majd a módosítás után a **Folytatás** gombra.
3. A **Beállítások importálása** oldalon kikapcsolhatod a vásárlóknak szóló e-mail-értesítések alapértelmezett letiltását, beállíthatod az **Ütemezési beállítások** és a **Haladó beállítások** részt. Általában ezek változatlanul jók. Kattints a **Folytatás** gombra.
4. A következő oldalon kattints a **Megerősítés és import futtatása** gombra. A végén az import befejezését jelző üzenetet látod.

## 4. lépés: ellenőrzés

Nyisd meg a célwebhelyen a **WooCommerce → Rendelések** oldalt. Ha nem látod az összes rendelést, nézd át a lépéseket. Ha csak néhány rendelés maradt ki, a lenti haladó részek megmondják, miért. Végső megoldásként törölheted az importot, és kezdhetsz elölről.

## Haladó témák

### A rendelés kimarad, mert nincs egyező vásárló

A csomag úgy van beállítva, hogy ha nincs egyező vásárló, a rendelés vendég vásárlóként importálódik, ezért általában nem kellene előfordulnia. Ha ezt a beállítást kikapcsolod, és nincs egyező vásárló, az előzménynaplóban ilyen sort látsz: „SKIPPED: Search customer by email … Existing customer not found for Order …”.

Megoldás: gondoskodj róla, hogy a rendelés vásárlójának legyen egyezése, vagy kapcsold be a vendégként importálás opciót (a hiányzó vásárló esetére), és töltsd ki a hozzá tartozó mezőket.

### A rendelés kimarad, mert nincs egyező termék

A rendelések a meglévő termékekhez cikkszám (SKU) alapján kapcsolódnak. Ezért a termékeknek léteznie kell a célwebhelyen, érvényes cikkszámmal. Ha nem mindegyik termék van ott, előbb migráld őket: [WooCommerce-termékek migrálása](https://hub.hellowp.io/hu/plugins/wpai-woocommerce-add-on/migralas-termekek/).

Ha nem akarod a termékeket migrálni, a rendelés termékadatait kézzel is megadhatod. Ehhez kapcsold be azt az opciót, amely a rendelés termékadatainak kézi importálására szolgál, és ne a meglévő termékekhez való illesztésre, majd töltsd ki a mezőket.

### Termékek összekapcsolása cikkszám nélkül

Ha a termékeidnek nincs cikkszáma, ideiglenesen létrehozhatsz egyet. Három lépésben:

1. **A termékek importjakor** vedd fel az `_old_id` egyéni mezőt a termék régi azonosítójával. Ebből készül az ideiglenes cikkszám.
2. **A rendelések importjakor** a termék cikkszáma mezőbe írj egy egyéni PHP-függvényhívást (például `[rendeles_termek_kapcsolat({productid[1]})]`), amely az `_old_id` alapján megkeresi a terméket, véletlenszerű cikkszámot rendel hozzá, és visszaadja azt:

```php
function rendeles_termek_kapcsolat( $termek_azonosito ) {
    global $wpdb;
    $post_id = $wpdb->get_var( $wpdb->prepare(
        "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = '_old_id' AND meta_value = %s",
        $termek_azonosito
    ) );
    if ( $post_id && $termek = wc_get_product( $post_id ) ) {
        $ideiglenes_sku = md5( $post_id );
        $termek->set_sku( $ideiglenes_sku );
        $termek->save();
        return $ideiglenes_sku;
    }
}
```

3. **Takarítás:** az ideiglenes cikkszámokat egy második kóddal töröld a termékekről az import után:

```php
function ideiglenes_sku_torlese( $post_id, $xml_node, $is_update ) {
    global $wpdb;
    $termek_post_id = $wpdb->get_var( $wpdb->prepare(
        "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = '_old_id' AND meta_value = %s",
        (string) $xml_node->productid
    ) );
    if ( $termek_post_id && $termek = wc_get_product( $termek_post_id ) ) {
        if ( $termek->get_sku() === md5( $termek_post_id ) ) {
            $termek->set_sku( '' );
            $termek->save();
        }
    }
}
add_action( 'pmxi_saved_post', 'ideiglenes_sku_torlese', 10, 3 );
```

Mindkét kódot illeszd be az **All Import → Beállítások** oldal Függvényszerkesztőjébe, vagy egy kódrészletkezelő bővítménybe. Hogy az import biztosan működjön, az iterációnként feldolgozott rekordok számát állítsd 1-re az import **Haladó beállítások** részében.

## Gyakori kérdések

### Átmennek a más bővítmények egyéni mezői is?

Igen, a legtöbb bővítmény egyéni mezőit a bővítmény felismeri. Ha egy bővítmény szokatlan módon tárolja az adatait, fordulj a bővítmény támogatásához.

### Hogyan migráljam a vásárlókat és a rendeléseket?

Előbb a vásárlókat, utána a rendeléseket. Ha termékeket is viszel, a sorrend: vásárlók, termékek, rendelések.

### Hogyan tarthatom szinkronban a rendeléseket két webhely között?

1. Készíts exportcsomagot a kívánt rendelésekkel.
2. A célwebhelyen importáld a csomagot.
3. Állítsd be az exportot és az importot is automatikus futásra az ütemezéssel.
4. Éles használat előtt próbáld ki.

Ha vásárlókat és termékeket is szinkronban akarsz tartani, azokra is ismételd meg a folyamatot, a rendelések előtt.

### Miben más ez, mint a többi migrációs bővítmény?

A legtöbb másik megoldás az adatbázist másolja, és felülírja a célwebhely adatait. Itt csak azt írod felül, amit akarsz, és az adatokat közben módosíthatod is.

### Hogyan exportálhatok rendeléseket?

1. Nyisd meg az **All Export → Új exportálás** oldalt.
2. Válaszd a **WooCommerce-rendelések** típust.
3. A húzd és ejtsd felületen állítsd be az oszlopokat.
4. Futtasd az exportot, és töltsd le a fájlt.

### Hogyan importálhatok rendeléseket?

1. Nyisd meg az **All Import → Új importálás** oldalt.
2. Válaszd ki a fájl forrását, a fájlt és a **WooCommerce-rendelések** típust.
3. Rendeld a fájl elemeit a rendelésmezőkhöz.
4. Futtasd az importot. Részletek: [WooCommerce-rendelések importálása](https://hub.hellowp.io/hu/plugins/wpai-woocommerce-add-on/rendelesek-vasarlok-rendelesek-importalasa/).

### Milyen bővítmények kellenek a rendelések migrálásához?

A WooCommerce-exportbővítmény és a WooCommerce Add-On, a WP All Export és a WP All Import mellett.
