Tänään minulle tuli vastaan keissi, missä asiakkaalle tarvitsi kopioida kehitysympäristöön (eli tuleville uusille sivuille) tuotantoympäristössä olevat verkkokaupan käyttäjät ja tilaukset.
Lähtötilanne oli tämä:
– Tuotantoympäristö – nykyinen versio sivuista missä 142 käyttäjää
– Kehitysympäristö – kopio tuotantoympäristöstä. Kopio otettu noin 2kk sitten. Tänne asiakkaalle oli kehitetty uutta versiota sivustosta. Näillä sivuilla käyttäjiä oli 117 kpl.
Ongelmana oli siis se, että kehitysympäristöön ei ollut kopioituneet viimeisimmät verkkokauppakäyttäjät ja tilaukset ja tuotannossa käyttäjiä oli nyt 142 kpl, joilla tilauksia 586 kpl ja kehityksessä käyttäjiä oli 117 kpl ja tilauksia 288 kpl. Tietenkään suora tietokannan kopiointi tuotannosta kehitykseen ei ollut mahdollista, koska silloin kaikki kehityspuolelle tehdyt kantapuolen muutokset (sivut, artikkelit, asetukset jne) olisi menetetty.
Tekemäni toimenpiteet:
1. Varmuuskopiointi: Ensimmäiseksi tein kehityspuolen tietokannasta kopion mitä käytetään backuppina, mikäli jokin menee sinne tietoja tuotaessa pieleen.
2. Aikaisempien käyttäjätietojen tyhjentäminen: Poistin kaikki tiedot kehityspuolen seuraavista tauluista:
– wp_users (jätin kuitenkin nykyisen admin-tunnuksen kantaan)
– wp_usermeta (jätin admin-tunnuksen tiedot kantaan)
3. Käyttäjätietojen kopioiminen: Otin kopion (export) tuotannosta samojen taulujen datasta mitkä mainittu edellisessä kohdassa ja vein ne phpmyadminin avulla kehityskantaan.
4. Tilausten kopiointi: Otin wordpressin vientityökalulla tuotantosivuista kaikki tilaukset xml-siirtotiedostoon ja vein ne tuontityökalulla uudelle sivustolle. Tätä ennen poistin kaikki vanhat tilaukset kehityssivuilta ”käsin” siirtämällä ne woocommercen tilauslistalta roskakoriin.
Nyt voisi kuvitella, että hauskuus loppuisi tähän, mutta jos lopettaisi tähän vaiheeseen niin kehityspuolella näkyisi nyt tilaukset ja käyttäjät oikein, mutta tilauksilla ei näkyisi tilatun tuotteen/tuotteiden tietoja. Vaikka Wordress/Woocommerce tallentaakin tilauksen tiedot wp_post- ja wp_postmeta -tauluihin (hinnasta lähtien), niin tuoteliitokset tallentuvat eri tauluihin: wp_woocommerce_order_items ja wp_woocommerce_order_itemmeta.
5. Aikaisempien testien poistaminen kehityspuolen tietokannan tauluista wp_woocommerce_order_items ja wp_woocommerce_order_itemmeta
6. Tuoteliitosten kopioiminen: Otin kopion (export) tuotannosta samojen taulujen datasta mitkä mainittu edellisessä kohdassa ja vein ne phpmyadminin avulla kehityskantaan.
Tämän jälkeen tilauksista ja käyttäjistä näkyy kaikki tiedot kehityskannassa.
Huomioita
Tässä yhteydessä ei tullut sitä ongelmaa vastaan, että asiakas olisi lisäksi ehtinyt lisäämään uusia tuotteita tuotantokantaan, mitkä olisi sitten pitänyt kopioida myös kehityspuolelle. Tämä aiheuttaisi hieman lisää säätöä. Jos olet vastaavassa tilanteessa, niin voit tarkistaa tuotantokannasta päivämäärän perusteella onko uusia tuotteita ehditty lisäämään:
SELECT * FROM wp_posts WHERE post_type = ’product’ order by post_modified DESC
Yhteenveto
Tilausten ja käyttäjien kopioiminen:
– Kopioi seuraavien taulujen datat vanhojen päälle:
- wp_woocommerce_order_items
- wp_woocommerce_order_itemmeta
- wp_users
- wp_usermeta
Importtaa tilaustiedot WordPressin hallintatyökalun kautta (vie tiedot tauluihin wp_posts ja wp_postmeta)
Oletko samassa tilanteessa?
Menikö liian tekniseksi? 🙂 Jos sinunkin tarvitsisi siirtää verkkokaupan asiakkaita ja heidän tilauksiaan toiselle sivulle, niin ota yhteyttä, autan mielelläni asian kanssa.