Come funziona WooCommerce
Modulo 1: Prima di iniziare · Tempo di lettura: 10 minuti
Obiettivo della lezione: dopo questa lezione saprà spiegare come funziona WooCommerce in WordPress e dove si trovano i prodotti, gli ordini, il carrello e le attività programmate.
Concetti chiave: tipo di prodotto, tipo di contenuto product, ordini (HPOS), pagine del negozio, sessione e carrello, Store API, REST API, Action Scheduler, email transazionali, estensioni
Un plugin che trasforma il Suo sito in un negozio
Nel corso su WordPress (lezioni 1.2 e 1.3) ha visto come nasce una pagina: il server web passa la richiesta a PHP, PHP carica WordPress, i plugin e il tema, recupera i dati dal database e li trasforma in HTML. WooCommerce si inserisce in questo processo come un grande plugin e porta con sé quattro elementi:
- Dati: prodotti, ordini, clienti, aliquote fiscali, zone di spedizione.
- Pagine: il negozio, il carrello, il pagamento e Il mio account.
- Processi: un carrello per ogni visitatore, pagamenti tramite un fornitore di pagamento, email, aggiornamento delle scorte, attività programmate.
- Punti di accesso per i programmi: la Store API e la REST API.
Chi sa dove si trovano questi componenti, in seguito trova un errore molto più rapidamente. Per questo li esaminiamo ora uno per uno.
Prodotti: un tipo di contenuto proprio
WordPress conosce i tipi di contenuto: pagine e articoli ne sono due esempi (corso su WordPress, lezione 4.2). WooCommerce aggiunge il tipo di contenuto product. Un prodotto si trova quindi, proprio come una pagina, nella tabella dei contenuti, con i suoi dati aggiuntivi (prezzo, SKU, scorte, peso) come metadati. Le categorie e i tag dei prodotti sono tassonomie proprie, separate da quelle del Suo blog.
Ogni prodotto ha un tipo di prodotto. Nella versione di base sono semplice, raggruppato, esterno (un link a un altro negozio) e variabile. Può inoltre attivare le caselle virtuale (nulla da spedire) e scaricabile (un file dopo il pagamento). Un prodotto variabile ha delle variazioni, ad esempio una teiera in tre colori; ogni variazione è un elemento a sé, con un proprio prezzo e proprie scorte. Il modulo 3 approfondisce questo argomento.
Ordini: tabelle proprie (HPOS)
In passato WooCommerce salvava anche gli ordini come contenuti. Nei negozi molto frequentati questo rallentava tutto, perché ordini e articoli del blog condividevano la stessa grande tabella. Per questo è nato HPOS (High-Performance Order Storage): gli ordini in tabelle proprie, come wc_orders, wc_order_addresses e wc_orders_meta (precedute dal prefisso delle tabelle del Suo sito). Da WooCommerce 8.2 (ottobre 2023) HPOS è attivo in ogni nuova installazione. Un negozio meno recente resta sul vecchio sistema di archiviazione finché non passa Lei stesso al nuovo in WooCommerce > Impostazioni > Avanzate > Funzionalità.
Perché è importante saperlo? Per tre motivi:
- Backup: gli ordini non si trovano nei Suoi file ma nel database. Per un negozio, un backup senza database non ha alcun valore (lezione 6.2).
- Estensioni: un'estensione meno recente che legge ancora gli ordini come contenuti non funziona correttamente con HPOS. WooCommerce mostra un avviso accanto al plugin se non è compatibile.
- Ripristino: se ripristina un backup di ieri, gli ordini di oggi scompaiono. Per un negozio è molto più grave che per un blog (lezione 6.2).
Il carrello: diverso per ogni visitatore
Una pagina normale è uguale per ogni visitatore. Il carrello no. Non appena un visitatore aggiunge qualcosa al carrello, WooCommerce avvia una sessione: un cookie (wp_woocommerce_session_ seguito da un codice) nel browser e una riga in una tabella delle sessioni nel database. Così, alla richiesta successiva, il negozio sa quale carrello appartiene a quel visitatore.
Due conseguenze che ritroverà più avanti:
- Carrello, pagamento e Il mio account non devono mai finire in una cache delle pagine, altrimenti un visitatore vede il carrello di un altro. Su queste pagine WooCommerce invia autonomamente intestazioni HTTP che vietano la memorizzazione nella cache (lezione 6.4).
- Un negozio che avvia una sessione per ogni visitatore, anche senza carrello, rende inutile la cache delle pagine dell'intero sito. È un errore frequente di temi ed estensioni.
Le pagine del negozio e i blocchi
Durante l'installazione WooCommerce crea quattro pagine: Negozio, Carrello, Pagamento e Il mio account. Dalla versione 8.3 (novembre 2023) le nuove installazioni usano i blocchi per carrello e pagamento; i negozi meno recenti usano spesso ancora gli shortcode. Funzionano entrambi. La differenza è importante per le estensioni: un'estensione che aggiunge qualcosa al pagamento deve supportare la variante che usa Lei. La lezione 2.2 mostra come verificarlo.
Due punti di accesso per i programmi: Store API e REST API
WooCommerce ha due punti di accesso programmabili, e la differenza è importante per la sicurezza:
| Store API | REST API | |
|---|---|---|
| Indirizzo | /wp-json/wc/store/v1/... | /wp-json/wc/v3/... |
| Per chi | Il negozio stesso (i blocchi nel browser) e altre vetrine | Integrazioni: contabilità, magazzino, app |
| Serve una chiave? | No, è pubblica: chiunque può leggere prodotti e prezzi | Sì, una Chiave API con permessi di lettura o scrittura |
| Che cosa contiene | Prodotti, prezzi, disponibilità, il carrello del visitatore attuale | Anche ordini, clienti, report |
Il fatto che la Store API sia pubblica non è una falla: mostra esattamente ciò che ogni visitatore vede nel negozio, solo in una forma leggibile dai programmi. Provi con il Suo negozio: apra https://shop.example.com/wp-json/wc/store/v1/products nel browser (con il Suo indirizzo) e vedrà i Suoi prodotti in formato JSON. La REST API, invece, deve restare chiusa senza chiave. La lezione 2.4 verifica entrambe.
Dietro le quinte: Action Scheduler ed email
Molto del lavoro di un negozio non avviene mentre il cliente attende, ma in un secondo momento. WooCommerce usa a questo scopo l'Action Scheduler: una coda di attività programmate, come l'annullamento di un ordine non pagato dopo il tempo impostato, l'invio di webhook o l'aggiornamento dei report. Può vedere la coda in WooCommerce > Stato > Azioni programmate. Queste attività girano su WP-Cron, che viene eseguito solo quando ci sono visitatori. In un negozio poco frequentato alcune attività possono quindi restare in sospeso; la lezione 7.3 mostra come un vero cron risolve il problema.
WooCommerce invia inoltre email transazionali: un'email a Lei per ogni nuovo ordine e email al cliente alla ricezione, alla spedizione, al rimborso o alla creazione di un nuovo account. Se non arrivano, il cliente pensa che qualcosa sia andato storto. La lezione 6.1 si occupa del recapito.
In pratica: ecco come appare in WooCommerce
Nella bacheca di WordPress di Theehuis Example, dopo l'installazione compaiono tre nuovi menu: WooCommerce (ordini, clienti, impostazioni, stato), Prodotti e Analytics (nelle versioni recenti talvolta sotto WooCommerce). In WooCommerce > Stato trova l'ambiente del server, le tabelle del database, le azioni programmate e i log. È una schermata che le servirà spesso. I passaggi sono uguali presso ogni hosting provider, perché si trovano in WordPress stesso.
Riepilogo
- WooCommerce porta con sé dati, pagine, processi e due punti di accesso programmabili.
- I prodotti sono un tipo di contenuto proprio; nei nuovi negozi gli ordini si trovano in tabelle proprie (HPOS, predefinito dalla 8.2).
- Il carrello funziona con una sessione per ogni visitatore; per questo carrello, pagamento e Il mio account non devono finire nella cache.
- La Store API è pubblica e mostra ciò che vede ogni visitatore; la REST API deve restare chiusa senza chiave.
- Le attività programmate passano dall'Action Scheduler e da WP-Cron; le email fanno parte del processo d'ordine.
Quiz
Esercizio
Esercizio A1.2: Questo sito funziona con WooCommerce? Inserisca un dominio, scelga sì o no e annoti quale prova ha visto (ad esempio "generator" o "wc/store/v1"). Il programma recupera la homepage, legge l'indice REST (/wp-json/, solo l'elenco dei namespace) e richiede /wp-json/wc/store/v1/products?per_page=1. Riconosce WooCommerce da un meta generator con WooCommerce, dal namespace wc/store/v1 nell'indice REST, da una Store API funzionante, da file provenienti da /wp-content/plugins/woocommerce/ o dalla classe body woocommerce. Verde: la Sua scelta è corretta e la Sua prova compare nelle intestazioni HTTP, nell'HTML, nell'indice REST o nella risposta della Store API; in tal caso vede anche il numero di prodotti e la valuta. Arancione: la Sua scelta è corretta, ma non ritroviamo la Sua prova. Rosso: la Sua scelta non è corretta. Provi prima sul Suo negozio e poi su un negozio che conosce. Non viene aggiunto nulla a un carrello e non viene inviato nulla.
Per saperne di più
Dove sono indicati passaggi in un pannello, valgono per WebOké; presso altri fornitori il funzionamento è simile.
- Corso gratuito WordPress 1.2: Sotto il cofano: server web, PHP e database
- Corso gratuito WordPress 1.3: File, wp-config e il database
- Corso gratuito WordPress 4.2: Pagine, articoli, categorie e tag
- High-Performance Order Storage (developer.woocommerce.com, in inglese): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
- Store API (developer.woocommerce.com, in inglese): https://developer.woocommerce.com/docs/apis/store-api/
- Action Scheduler (in inglese): https://actionscheduler.org/
