Quando viene realizzato un ecommerce, è necessario inserire i prodotti da vendere. Questa operazione può essere tediosa se portava avanti completamente a mano, e quindi può essere utile avere uno strumento per importare prodotti in maniera massiva. Ad esempio dal gestionale aziendale che, se presente già in azienda, conterrà probabilmente tutti i prodotti da vendere nell'ecommerce e molti altri. Ed è comodo utilizzare un file tabellare, un tipico file CSV, o provenienti da una fonte dati esterna (come le API del gestionale, o altre forme).
Vediamo allora in generale come può essere fatto un software per importare prodotti in maniera massiva, quali sono le parti che normalmente lo compongono.
Importare prodotti in WooCommerce
Per iniziare, vanno definite la modalità di importazione, le fonti dati disponibili, il formato dei campi e altri aspetti tecnici, ma possiamo ipotizzare di considerare i titoli, le descrizioni, le immagini e le caratteristiche base dei prodotti. L’importazione potrebbe essere effettuata da un operatore o in automatico (ad esempio, con un meccanismo di aggiornamento che gira una volta al giorno).
Struttura di un importer generico
Ogni importer è diverso, ma in linea di massima, un importer dovrà prendere in ingresso i dati da importare, li dovrà interpretare e adattare, e poi li dovrà inserire nella nuova struttura dati, quindi gli elementi che lo compongono saranno simili. Io ne ho identificati 3 generici: Read, Business Logic, Save.
Read: elemento che dialoga con la fonte dati
Effettua la connessione ad una fonte dati nel formato in cui i dati sono espressi, quindi un DB, un file con un formato che potrebbe essere l’XML, il pipe-separeted o il fixed-width (mi è capitato, soprattutto in passato, spero non lo usi più nessuno!) un CSV, un’API in JSON o altro.
Oltre al formato nel quale i dati sono espressi, altro elemento importante è la struttura degli stessi: possono infatti essere destrutturati come in un database NoSQL, strutturati come nei database relazionali, possono essere costituiti da più fonti o necessitare di un arricchimento con logiche successive.
Il tempo di sviluppo di questa parte dipende molto dal formato dei dati e dalla modalità con la quale vengono messi a disposizione.
Business Logic: elemento che valuta e adatta
Una volta creato un connettore per leggere i dati, di solito è utile normalizzare e arricchire in base alla logica stabilita dall’analisi. Ad esempio, un campo stringa “Categoria” potrebbe essere utilizzato per impostare automaticamente la categoria in WordPress.
Oppure nella fonte dati potrebbero essere presenti più immagini con le quali impostare la Featured Image e una gallery; alcune informazioni potrebbero essere inutili e filtrate, oppure combinate fra di loro per creare campi descrittivi.
Save: elemento che inserisce i prodotti nel database
Una volta che il pacchetto dati è letto e normalizzato, andrà inserito nel database. Il nuovo database potrà coincidere con l’area dati di WooCommerce, con un Custom post type, con una o più tabelle create completamente da zero (che legheremo alla wp_posts attraverso l’ID) in campi descrittivi e in post_meta personalizzati, o con un mix di tutti questi elementi.
Molto utile la funzionalità per eseguire il rollback dell’importazione nel caso in cui dovesse essere andata male o per qualsiasi motivo, cioè il bottone per eliminare tutti i prodotti importati, i dati eventualmente inseriti in tabelle esterne e le immagini caricate.
Utilizzare un plugin per importare prodotti in WooCommerce
Fra i plugin che ho realizzato, è disponibile uno che deve essere sempre adattato lato codice PHP per essere utilizzato su un nuovo progetto, ma offre già alcune funzionalità utili, come la possibilità di eliminare in automatico i prodotti che corrispondono a determinate caratteristiche (come quelli più vecchi o non più disponibili) aggiornare le immagini ai prodotti già importati, impostare in automatico categorie in base a parametri configurati e molto altro.
Modalità automatica
Un processo in crontab lancia la procedura di importazione e invia un’email con un report per analizzare se tutto è andato a buon fine o intervenire puntualmente.
Modalità manuale
Il cliente, come operatore in WordPress, accede ad una schermata nel /wp-admin e carica manualmente il file da importare, lancia l’importazione con un bottone e può verificare in tempo reale il report di simulazione per valutare che tutti i dati siano stati correttamente interpretati, per poi confermare o meno l’importazione.
Un aspetto molto importante disponibile sia nella modalità automatica che in quella manuale è che ad ogni importazione, i dati reperiti vengono salvati in cartelle per futura analisi se necessaria. Viene inoltre salvato un codice per identificare la sessione di importazione e le tabelle e gli id che sono stati modificati e inseriti. Questo dà la possibilità di effettuare un rollback in caso di problemi.
Esempi di personalizzazioni
- Hai un gestionale aziendale con tutto il catalogo, hai appena realizzato un ecommerce e stai impiegando troppo tempo per caricare manualmente i prodotti WooCommerce, quindi hai bisogno di un sistema per caricare direttamente dal gestionale;
- collabori con un fornitore che ti mette a disposizione i prodotti nuovi del catalogo o gli aggiornamenti delle descrizioni degli articoli che tu rivendi direttamente e vuoi che il tuo ecommerce si aggiorni in automatico;
- hai il catalogo diviso in diversi file e le immagini in un’altra cartella e vorresti che tutto questo riempia in automatico il catalogo woocommerce.
