
Spesso capita di dover importare in WordPress (come custom post type) o in WooCommerce dei prodotti presi da fonti esterne, come le API di un gestionale aziendale o un catalogo.
Ogni fonte dati è diversa; può esserlo nel formato o nella struttura delle informazioni, e i dati possono essere, a loro volta, importati in strutture diverse.
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.
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.
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.
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.
Con queste caratteristiche sono stati realizzati diversi importer negli anni; in particolare un plugin per WordPress scritto da zero e che personalizzo per ogni progetto