29/01/2020

Migrare da WooCommerce a PrestaShop? Si può.

Hai impostato uno shop con WordPress (d’ora in poi WP) e WooCommerce (d’ora in poi WC), il tuo business sta crescendo e il plugin ti inizia a stare un po’ stretto, non ti permette quell’integrazione con il CRM che vorresti, non riesci ad integrare un sistema di statistiche, aggiungere un nuovo metodo di pagamento che sembra essere richiesto dai tuoi clienti, e così via.

Bene, devi sapere che c’è la possibilità di migrare a PrestaShop (d’ora in poi anche PS), piattaforma più adatta a un business in crescita e ricca di funzionalità di base, ma anche con a disposizione il marketplace ufficiale di moduli e temi, con i quali potrai aggiungere in pochi minuti nuove features o cambiare faccia del tuo e-commerce con tanti template a disposizione.

Allora, in questo articolo ti illustrerò le possibili strade, dalla più tecnica adatta prettamente a sviluppatori o programmatori, alla più semplice per chi non ha tempo o competenze.

Quindi, facciamo un elenco:

  • Migrazione manuale dei dati
  • Utilizzare un modulo
  • Contattare un partner PrestaShop
  • Utilizzare uno strumento terzo

Migrazione manuale dei dati

Premessa; questa procedura è la più lunga e per i più esperti, se non sei uno sviluppatore ti consiglio di leggere direttamente gli altri metodi più in basso.

Perfetto, partiamo con i più “smanettoni”, analizziamo un attimo la struttura dei dati di WC:

Migrare da WooCommerce a PrestaShop? Si può.

Non spiegheremo tutte le tabelle in questo articolo, ma vi lascio il link qui per poter leggere tutte le specifiche, quindi, d’ora in poi daremo per assodato che avrete sottomano quella pagina come riferimento.

Oltre alle tabelle aggiuntive che aggiungerà WC, abbiamo bisogno anche di queste di base:

  • wp_users
  • wp_usermeta
  • wp_posts
  • wp_terms

Abbiamo la possibilità di migrare questi dati:

  • Clienti e indirizzi
  • Categorie
  • Prodotti
    • Prezzi e tasse
    • Immagini
    • Attribute
    • Caratteristiche
  • Ordini
  • Corrieri

Le tabelle di PrestaShop interessate per questi dati sono (assunto ps_ come prefisso per le tabelle):

  • ps_customer
  • ps_customer_group
  • ps_address
  • ps_product
  • ps_product_lang
  • ps_product_shop
  • ps_attribute
  • ps_attribute_lang
  • ps_attribute_shop
  • ps_attribute_group
  • ps_attribute_group_lang
  • ps_product_attribute
  • ps_product_attribute_combination
  • ps_product_attribute_shop
  • ps_stock_available
  • ps_category
  • ps_category_lang
  • ps_orders
  • ps_order_detail
  • ps_order_detail_tax
  • ps_order_carrier
  • ps_order_invoice
  • ps_order_invoice_payment
  • ps_order_invoice_tax
  • ps_order_payment
  • ps_cart
  • ps_cart_product
  • ps_feature
  • ps_feature_lang
  • ps_feature_value
  • ps_feature_value_lang
  • ps_feature_product
  • ps_feature_shop

Già, sono davvero un sacco di tabelle! Ma andiamo per gradi.

Clienti e indirizzi

I clienti di WC sono memorizzati nella tabella wp_users e wp_usermeta, nella prima ci sono le informazioni di base come l’id di wp, la login, e-mail, password, ecc.

A noi in questa tabella servono solo l’e-mail e la “password”. Attenzione, per poter utilizzare le password che i clienti hanno utilizzato su WP, dovremmo effettuare qualche operazione in più, che non vedremo in questo articolo, ma vi scrivo una possibile soluzione:

  • Creare una tabella nel database (con un modulo possibilmente)
    • La tabella dovrà contenere l’hash della password di WP
  • Fare un override della classe Customer
    • Nel metodo dove viene effettuato il check dei dati al login, creare un fallback che controlli l’MD5 della password con l’hash salvato nella nostra tabella

Mentre nella seconda, ci andremo a prendere tutti i dati, come;

nome e cognome (che prenderemo da uno dei due indirizzi registrati):

  • shipping_first_name oppure billing_first_name
  • shipping_last_name oppure billing_last_name

E gli indirizzi, tutti i campi che iniziano per shipping_ o per billing_, questi campi andranno mappati con i campi delle tabelle di PrestaShop.

Il mio consiglio è utilizzare la classe “Customer” e “Address” in un semplice file PHP da posizionare nella root del sito (attenzione, solo ambiente di sviluppo/test):

Migrare da WooCommerce a PrestaShop? Si può.

Nello script manca l’iterazione tra le informazioni prese dal db di wordpress, qui potete operare come meglio credete, copiare le tabelle all’interno del db di PS per poi cancellarle, in questo modo potete fare query direttamente da questo script, ecc. Di modi ce n’è sono quanti ne volete. Scegliete quello che trovate più semplice.

E per quanto riguarda la password, come già detto precedentemente, o applicate quella tecnica, oppure generate della password casuali da inviare ai clienti, oppure si comunica ai clienti che bisogna reimpostare la password (è fattibile in autonomia da front-office).

Quindi per prima cosa creiamo l’utente con i dati necessari (nome, cognome, e-mail e password) che andranno a finire in ps_customer, per il id_default_group possiamo utilizzare l’id #3, che per PrestaShop vuol dire ‘Cliente’.

Dopo che avremo il nostro ID utente lo useremo per assegnargli gli indirizzi (ps_address).

Migrare da WooCommerce a PrestaShop? Si può.

Liberi di creare query o script custom in questa fase. Volendo, potete anche sfruttare gli ID di WP, in questo caso il consiglio è di importare su un’installazione pulita di PrestaShop, e sarà sicuramente più rapido il passaggio.

Qui dobbiamo fare un po’ di attenzione, l’id_country e l’id_state dovremmo prenderli da queste tabelle: ps_country (e ps_country_lang) e ps_state (e ps_state_lang), che corrispondono alle nazioni e alle province.

Ricordiamoci di prendere solo gli utenti con il campo wp_user_level a 0 e wp_capabilities impostato su “customer”.

Utilizzando le classi di PrestaShop sarà più facile importare i dati, in quanto per i campi non necessari o di sistema si occuperà lui stesso di riempirli.

Categorie

Le categorie le troviamo all’interno di wp_terms e alcuni dati in wp_term_taxonomy, la struttura genitore/figlio dobbiamo andarcela a ricreare noi. Vediamo di aiutarci sempre con le classi di PrestaShop, in questo caso useremo “Category”:

Migrare da WooCommerce a PrestaShop? Si può.

Qui, tutto sta nel come ci andremo a prendere le categorie da WP, tenete presente che in wp_term_taxonomy c’è il campo ‘parent’ che ci dice  se quella categoria è figlia di un’altra, quindi, recuperiamo prima quelle che hanno parent = 0 e poi con le successive, in questo modo saremo sicuri che avremo già creato la categoria genitore in PS.

Per prendere solo le categorie, il campo ‘taxonomy’ è impostato a ‘product_cat’

Attributi

Questi servono nel caso ci sono prodotti con combinazioni, ossia con attributi, ad esempio colori diversi, taglie diverse, ecc.

Le informazioni sono sparse per queste 4 tabelle di WP (5 se sono assegnati ad almeno un prodotto):

  • wp_woocommerce_attribute_taxonomies
  • wp_term_taxonomy
  • wp_term_meta

In queste due troviamo l’attributo.

  • wp_terms
    Qui invece troviamo i valori che può assumere quell’attributo.
  • wp_term_relationships
    Qui troviamo la relazione tra l’attributo e il prodotto

Esempio:

Se avessimo creato un attributo “Color”, e due valori questo attributo “Black” e “White”, ci ritroveremo queste informazioni nel DB:

wp_woocommerce_attribute_taxonomies

Migrare da WooCommerce a PrestaShop? Si può.

wp_term_taxonomy

Migrare da WooCommerce a PrestaShop? Si può.

wp_term_meta

Migrare da WooCommerce a PrestaShop? Si può.

wp_terms

Migrare da WooCommerce a PrestaShop? Si può.

E infine wp_term_relationships (term_taxonomy_id 19 e 20)

Migrare da WooCommerce a PrestaShop? Si può.

Estraiamo i nostri dati come meglio preferiamo, e diamogli un senso logico per poterli importare in PS, in questa fase andremo ad utilizzare le classi “Attribute” e “AttributeGroup”.

AttributeGroup, ci serve per definire l’attributo in sè (Colore ad esempio), mentre Attribute, i valori che può assumere quell’attributo.

Migrare da WooCommerce a PrestaShop? Si può.

Dopodiché i valori per quell’attributo:

Migrare da WooCommerce a PrestaShop? Si può.

Prodotti

Veniamo al cuore di questa migrazione dati, i prodotti. Non semplice, ma nemmeno impossibile.

Le tabelle di WC saranno:

  • wp_wc_product_meta_lookup
  • wp_wc_tax_rate_classes
  • wp_post
  • wp_term_relationships
  • wp_term_taxonomy
  • wp_postmeta
  • wp_termmeta
  • wp_terms

Qui siete liberi di partire o da wp_post e selezionare solo i prodotti che hanno come “post_type = product”, oppure partire da wp_wc_product_meta_lookup, e poi collegare tutte le altre info.

In questa tabella troviamo queste informazioni:

  • Codice (sku)
  • Prezzo (min e max)
  • Quantità
  • Tipologia (virtuale, scaricabile)
  • Attivo
  • Valutazione (rating)
  • Contatore venduti

In wp_post_meta troviamo altre info:

  • Prezzo standard (regular price)
  • Peso
  • Altre info se download
  • Prezzo attuale
  • Attributi (stringa serializzata)

In wp_term_taxonomy, wp_term_relationships, wp_terms:

  • Tipologia prodotto
  • Categorie
  • Caratteristiche

In wp_wc_tax_rate_classes troviamo la tassazione

Pensate che sia un po’ confusionario? Lo è! 
Riunite i pezzi sparsi tra le varie tabelle come meglio credete :) perché serviranno tutti insieme quando andremo a creare il nostro prodotto, vediamo un po’ di codice:

codice-nuovo-prodotto.png

Queste sono le informazioni di base che dobbiamo settare per un prodotto, alcune informazioni dovremmo andarle a prendere da altre entità, come il gruppo tasse. Se c’è l’intenzione, cosa che consiglio, di mantenere gli stessi id di WC, ricordate di impostare “force_id = true”.

Per questioni di complessità non possiamo sviscerare tutti i possibili casi, di altre informazioni che possono essere presenti in WC, ma questa è la logica di base. Vi lascio il link dell’importazione che adotta PrestaShop da backoffice, per i CSV, gli step sono gli stessi (ovviamente con tante info in più!), partite dal metodo productImportOne:
https://github.com/PrestaShop/PrestaShop/blob/1.7.6.x/controllers/admin/AdminImportController.php

Se c'è qualche linea di codice difficile da capire, vi consiglio di iscrivervi sulla nostra academy https://italia-prestashopacademy.talentlms.com/; qui sono presenti corsi gratuiti per sviluppatori dovre potrai approfondire la programmazione in PrestaShop, sia front end che back end.

Utilizzare un modulo

Se leggendo la procedura di prima, al secondo/terzo paragrafo ti è venuto il mal di testa, la seconda opzione è quella di utilizzare un modulo, poca spesa tanta resa.
Sul nostro marketplace ufficiale ce ne sono addirittura 3, due per migrare i dati e uno più orientato alla SEO.

Migrazione Dati

SEO Redirect

Tutti e tre i moduli sono corredati da documentazione per poter importare in pochi click i dati da WooCommerce a PrestaShop.

Se non siete molto esperti, il mio consiglio è di puntare su uno di questi moduli. Grazie alla guida presente in ognuno di essi, riuscirete senza troppi problemi a portare i dati dal vostro vecchio e-commerce al nuovo, ossia, PrestaShop :)

Contattare un partner PrestaShop

Se siete “pigri” e nessuno dei due metodi precedenti fa per voi, beh, allora non vi resta che contattare uno dei nostri partner certificati che si occuperà di portare tutti i dati su PrestaShop senza troppe preoccupazioni, inoltre, se avete aggiunto altre funzionalità al vostro sito in Wordpress sicuramente possono integrarle in PS senza troppi problemi.

Le nostre agenzie partner le trovate a questa pagina: /esperti

Potete filtrare i nostri esperti per Nazione, regione, expertise, e anche versione di PrestaShop. 

Conclusioni

Bene, adesso non hai più scuse per cambiare piattaforma e far crescere il tuo business :)

Alcune note a margine: se hai intenzione di migrare verso PrestaShop da WooCommerce, la parte di front (template/tema) non è ‘migrabile’, questo vuol dire che avrai bisogno di un nuovo tema per PrestaShop, con le eventuali modifiche fatte su Wordpress.

Dal mio punto di vista, per questioni di tempo o risorse, vi sconsiglio la prima metodologia, salvo casistiche particolari, ma consiglio o un modulo o un partner, vi farà guadagnare un sacco di tempo che potete destinare su altri aspetti del progetto.

I temi ufficiali sono presenti sempre sul nostro marketplace ufficiale, addons.prestashop.com.

Ogni 2 settimane, la nostra newsletter di e-commerce

Inviando questo modulo, accetti che i dati inseriti vengano utilizzati da PrestaShop S.A per l’invio di newsletter e offerte promozionali. Puoi annullare l’iscrizione in qualsiasi momento utilizzando il link nelle e-mail che ti sono state inviate. Ulteriori informazioni sulla gestione dei tuoi dati e sui tuoi diritti.