Nemrégiben azzal a feladattal kerültem szembe, hogy frissítsem a WooCommerce rendeléseket az éles, és a fejlesztés alatt álló, egyelőre még nem publikus weboldal között. Adott volt tehát egy a látogatók számára is elérhető weboldal, ahol naponta adtak le rendeléseket a vásárlók és készült ennek egy újabb változata egy másik tárhelyen, amit csak a fejlesztők és a tulajdonos tudott elérni. Amint befejeződött a fejlesztés értelemszerűen az volt a cél, hogy az időközben az éles weboldalon leadott rendelések is átkerüljenek az új weboldalra mielőtt az elindul élesben a látogatók számára. Első hallásra ez egyszerű feladatnak tűnik, csak le kell menteni a régi (még éles) adatbázist és importálni az új tárhelyre, igaz? Nos, nem egészen. Ugyanis rengeteg beállítás és változtatás történt a két oldal között, az új adatbázis felülírásával pedig ezek rögtön elvesznének, tehát lehetne elölről kezdeni a fejlesztések nagyobbik részét. Más megoldást kellett hát keresni.
Természetesen mint mindenre, erre a feladatra is léteznek bővítmények, azonban ahhoz, hogy egy normális import/export folyamatot véghez tudjunk hajtani az oldalak között sajnos elég mélyen a pénztárcánkba kellett volna nyúlni, mert erre a célra csak fizetős plugineket találni. Az ingyenes exportáló variánsok csak XML vagy CSV fájlba tudnak menteni, az pedig nekünk jelen esetben nem volt megfelelő.
Szerencsére mások is szembesültek már ezzel a problémával és készült egy egyszerű kis PHP script, ami képes aktualizálni a rendeléseket az adatbázisok között, mégpedig úgy, hogy közben semmi máshoz nem nyúl, semmit nem töröl és módosít, minden beállítást érintetlenül hagy és még az sem számít neki, ha az adatbázisok, a WordPress (és a WooCommerce) eltérő verzió (tehát működik 2.x és 3.x között is).
A script elérhető a következő github linken: Rendelések migrálása
Ha valamilyen oknál fogva törlődne vagy nem lenne elérhető a fenti linken, akkor itt is megtalálod: Rendelések migrálása (WPSzaki mirror)
Használata nagyon egyszerű. Mentsük le, nevezzük el például “rendelesek.php” néven és szerkesszük benne az adatbázisokra vonatkozó részt, tehát a következő sorokat:
define('NEW_DB', 'AZ_UJ_ADATBAZIS_NEVE'); define('OLD_DB', 'A_REGI_ADATBAZIS_NEVE');
Az új adatbázis az, ahová az éles oldal rendeléseit szeretnénk áthozni, a régi pedig értelemszerűen az, ami per pillanat még éles, tehát ahol a friss rendeléseink vannak. Az adatbázisok neveinek megadása után szükség van még a kapcsolódási adatokra is, azokat itt tudjuk módosítani:
25.sor:
$new_conn = mysqli_connect( 'localhost', 'ADATBAZIS_FELHASZNALO', 'ADATBAZIS_JELSZO', NEW_DB );
36.sor:
$old_conn = mysqli_connect( 'localhost', 'ADATBAZIS_FELHASZNALO', 'ADATBAZIS_JELSZO', OLD_DB );
A 25.sorba kerülnek az új adatbázis bejelentkezési adatai (felhasználónév és jelszó), a 36.sorba pedig a régi (még éles) oldal adatbázisának adatai.
Ezután nincs más hátra, mint elmenteni a módosított PHP fájlt és feltölteni az új (vagy akár a régi) oldalunk tárhelyére és meghívni a következőképpen: “http://oldal.hu/rendelesek.php”. Ha mindent jól csináltunk, akkor pár másodperc után listázza is, hogy mi is történt a háttérben, mely rendelések kerültek beillesztésre és melyeket hagyta érintetlenül (mert megegyeznek a két oldal között). Ha hibaüzenet jelenne meg vagy nem futna le a script, akkor első körben érdemes ellenőrizni, hogy helyesen adtuk-e meg az adatbázisok adatait.
Nálam többször is jelesre vizsgázott a fenti kis script és igazán hasznosnak is bizonyult. Jóval gyorsabb, kényelmesebb és nem utolsósorban olcsóbb megoldás, mint egy fizetős bővítmény, ami lényegében ugyanezeket a funkciókat tartalmazza.