Documentazione MevvAtelier

Nulla entra in produzione finché il cliente non dice di sì.

MevvAtelier installa dentro WooCommerce un percorso di produzione su misura: un configuratore che calcola il prezzo sul tuo server, un caveau da cui le foto caricate non escono mai, un link firmato che il cliente apre senza account per approvare l’anteprima, quattro stati d’ordine che avanzano soltanto e una coda di laboratorio che mostra cosa è in ritardo. Questa guida copre l’installazione, le pagine che crei, dove stanno i prezzi, la coda, ciò che vede il cliente e cosa controllare quando qualcosa non funziona.

Che cosa fa

Un prodotto fatto per una sola persona non sta in una normale scheda prodotto. Il cliente deve mandarti una fotografia, tu devi costruire il pezzo, e lui deve vederlo e dire di sì prima che tu spenda il materiale. Fatto a mano, questo è una catena di e-mail, e la catena si spezza ogni volta nello stesso punto: nessuno può dire con certezza se il cliente abbia approvato la versione che hai davvero stampato.

MevvAtelier rende quella catena parte dell’ordine. L’ordine porta con sé le fotografie, l’anteprima, l’approvazione e la sua marca temporale, e gli stati che attraversa sono veri stati d’ordine di WooCommerce: compaiono quindi nell’elenco ordini, nei report e nei filtri che già usi.

Lo usi quando
Vendi qualcosa che produci su ordinazione a partire da ciò che il cliente ti invia, e vuoi che la sua approvazione sia registrata prima che la produzione cominci.
Non è un plugin di opzioni prodotto
Non c’è una matrice di variazioni né un costruttore di opzioni per prodotto. È un unico percorso, con un’unica pagina di configuratore, per una linea che realizzi su ordinazione.
Le fotografie non sono allegati della libreria media
Sono file privati con un proprio termine di conservazione. La fotografia di un cliente non è l’immagine di un prodotto e non viene trattata come tale.

Requisiti: WordPress 6.0 o successivo, PHP 8.1 o successivo e WooCommerce. Senza WooCommerce il plugin si ferma da solo e lo dice: non ha un proprio percorso ordini su cui ripiegare.

Impostazioni, e l’unico limite che resta

Tutto ciò che un negozio cambia di solito sta sotto Atölye → Ayarlar: come si chiama ogni pacchetto, quanto costa da una a sei persone, i prezzi dei due extra, quale pacchetto regala il kit di colori, quale è selezionato all’apertura della pagina e per quanto tempo si conservano le fotografie.

Scrivi i prezzi in lire e il plugin li salva come unità minori intere. Il salvataggio è tutto o niente: se un campo non è leggibile non ne viene scritto nessuno e la schermata ti dice quale. Mezza tabella dei prezzi è una tabella che si rompe proprio mentre un cliente sta ordinando.

Rinominare un pacchetto
I nomi forniti con il plugin descrivono statuette stampate in 3D perché quello era il negozio per cui è stato costruito. Scrivi i tuoi — «Ciondolo piccolo», «Targa incisa», «Stampa A4» — ed è quello che vede il cliente. La chiave interna accanto a ogni campo non cambia mai, quindi gli ordini esistenti continuano a puntare alla cosa giusta.
Vendere meno di cinque
Lascia vuoto il nome di un pacchetto e sparisce dal modulo d’ordine, e il server lo rifiuta se qualcuno lo invia lo stesso. I suoi prezzi restano nella tabella, quindi riaccenderlo più avanti è una parola, non una riscrittura.
Quale pacchetto si apre selezionato
Una decisione commerciale più che tecnica: la fascia intermedia àncora il cliente verso l’alto, la più economica verso il basso. Se quella che hai scelto viene poi spenta, il modulo ripiega sul primo pacchetto ancora attivo invece di aprirsi senza alcun prezzo.

IL LIMITE CHE RESTA: ci sono cinque posti per i pacchetti. Puoi rinominarli, prezzarli e spegnerli, ma non puoi aggiungerne un sesto. Se la tua linea ne richiede di più, scrivici dicendo quanti: è la prossima cosa in costruzione, e conoscere il numero reale le dà forma.

Installazione

  1. Installa e attiva prima WooCommerce. MevvAtelier si rifiuta di avviarsi senza.
  2. Installa MevvAtelier: carica lo zip da Plugin → Aggiungi nuovo, oppure copia la cartella mevvatelier in /wp-content/plugins/.
  3. Attivalo. All’attivazione il plugin registra i suoi stati d’ordine, crea la cartella del caveau delle foto e pianifica il processo giornaliero di conservazione.
  4. Crea una pagina e inseriscici lo shortcode [mevvatelier]. Quella pagina è il tuo modulo d’ordine.
  5. Fai un ordine di prova dalla pagina, poi apri Atölye nel menu di amministrazione e percorrilo una volta dall’inizio alla fine. Fallo prima di pubblicizzare la pagina: il giro completo richiede cinque minuti ed è l’unico modo di vedere le e-mail che il tuo negozio invia davvero.

I link di approvazione sono firmati con un segreto generato al primo utilizzo e conservato nel tuo database. Non lascia mai il tuo server e non è derivato da nulla che sia in nostro possesso.

I tre shortcode

[mevvatelier]
Il modulo d’ordine. Cinque passaggi: pacchetto, quante persone ci sono nella scena, le fotografie, i dati del cliente e una casella di consenso. Mostra un totale progressivo mentre il cliente sceglie, e quel totale non è mai ciò con cui l’ordine viene scritto — vedi «Dove stanno i prezzi».
[mevvatelier_tanitim]
Una fascia promozionale per la tua home page: un titolo, un breve testo e un pulsante verso il modulo d’ordine. Accetta un id di allegato: [mevvatelier_tanitim gorsel="123"].
[mevvatelier_gorsel]
Un’immagine dalla tua libreria media resa con le dimensioni responsive che WordPress ha già generato: [mevvatelier_gorsel id="123" size="large"]. Esiste perché una pagina promozionale non stampi una fotografia da 2000 pixel in uno spazio da 380 pixel su un telefono.

La pagina d’ordine disattiva la cache di pagina per sé stessa, nel linguaggio che LiteSpeed, WP Rocket e W3 Total Cache capiscono allo stesso modo, e invia inoltre header no-store. Un modulo d’ordine in cache invia con un token scaduto e fallisce in silenzio, il che per il cliente sembra un modulo che non fa nulla.

Dove stanno i prezzi

Il prezzo di un ordine è calcolato sul tuo server dalla sola selezione del cliente. Un totale inviato dal browser viene semplicemente ignorato: chiedere al browser quanto far pagare è la via più breve per farsi comprare per niente. Il denaro è tenuto in unità minori intere (kuruş, centesimi), mai come decimale, così un ordine lungo non può scostarsi di un’unità tra la fattura e l’ordine.

Li modifichi sotto Atölye → Ayarlar, in lire, con la virgola per i kuruş. Ogni pacchetto ha bisogno di un prezzo per ogni numero di persone supportato, da uno a sei. L’intera tabella viene validata prima che si scriva qualsiasi cosa e, se un campo non è leggibile, la schermata ti dice quale e non ne scrive nessuno: mezza tabella dei prezzi è una tabella che si rompe proprio mentre un cliente sta ordinando.

Sta tutto in un’unica opzione, mevvatelier_pricing, se preferisci distribuirla con WP-CLI invece di cliccare. Il plugin rilegge l’opzione dopo averla scritta e si rifiuta di dichiarare successo se la lettura non corrisponde, perché a un negozio con cache oggetti persistente si potrebbe altrimenti dire «salvato» mentre continua a vendere al vecchio prezzo.

wp eval '
  $t = MevvAtelier_Settings::pricing_table();
  $t["labels"]["orta"]        = "Orta boy kolye ucu";
  $t["packages"]["orta"][1]  = MevvAtelier_Pricing::parse_money( "1.290,50" );
  $t["default_package"]      = "orta";
  var_dump( MevvAtelier_Settings::save_pricing_table( $t ) );
'

Le chiavi interne dei pacchetti sono anahtarlik, orta, buyuk, anahtarlik_orta e uclu_set; quelle degli extra sono paint_kit e rush. È a queste che si riferiscono il codice e i tuoi ordini esistenti, quindi non cambiano mai: il nome che vede il cliente è un campo separato che puoi riscrivere quando vuoi.

La coda del laboratorio

Atölye compare nel menu di amministrazione per chiunque possa modificare gli ordini del negozio. Elenca gli ordini aperti partendo dal più vecchio e segna in rosso quelli oltre il termine promesso: ventiquattro ore di norma, sei per un ordine urgente. La domanda a cui risponde non è «cosa è aperto» ma «cosa è in ritardo», l’unica che meriti una schermata.

L’operatore carica l’anteprima dalla stessa riga. Il caricamento mette il file nel caveau, registra un checksum esattamente di ciò che è stato mostrato, porta l’ordine a Müşteri onayında e manda l’e-mail al cliente: un’unica azione, non quattro cose da ricordare.

Model bekliyor
wc-mevv-model. Le fotografie sono arrivate, il modello è in costruzione. Il link del cliente funziona e gli dice esattamente questo.
Müşteri onayında
wc-mevv-onay. L’anteprima è stata inviata. Il cliente può approvarla o chiedere una correzione, tutte le volte che serve.
Baskıda
wc-mevv-baski. Approvato e in produzione. Il modulo di revisione è sparito dalla schermata, e a questo punto anche il server rifiuta una richiesta di revisione, non solo la schermata.

Quale stato possa seguire quale è scritto come elenco di transizioni permesse anziché vietate. Un passaggio a cui nessuno ha pensato viene rifiutato per impostazione predefinita invece che consentito in silenzio: è questa la differenza tra una macchina a stati e un suggerimento.

Cosa vede il cliente

Un solo link, inviato per e-mail, valido sessanta giorni e senza bisogno di account. Chiedere a qualcuno di registrarsi prima di poter guardare la propria anteprima è il modo più sicuro di perdere l’approvazione, perciò il link porta con sé la propria autorizzazione: è firmato, nomina un ordine e nessun altro, e uno manomesso non apre nulla.

La pagina mostra una schermata diversa per ogni stato e non viene mai messa in cache: una pagina di approvazione in cache mostrerebbe l’anteprima di un cliente al visitatore successivo. Il link di approvazione compare due volte in ogni e-mail, come pulsante e come testo semplice, perché alcuni client di posta non disegnano il pulsante.

  • Ordine ricevuto — inviata al momento dell’ordine, con il link.
  • Anteprima pronta — inviata quando l’operatore la carica. È questa l’e-mail che chiede una decisione.
  • Approvazione registrata — inviata quando approva, e dice chiaramente che la produzione è iniziata.
  • Spedito — inviata quando l’operatore segna l’ordine come completato.

Le e-mail passano attraverso il template WooCommerce del tuo negozio, quindi assomigliano al resto della tua posta e non a un’aggiunta posticcia.

Le fotografie

I caricamenti finiscono in una cartella dentro la tua uploads dal nome non indovinabile, protetta in quattro modi contemporaneamente: una regola .htaccess, un web.config per IIS, un index.php e permessi di file che lasciano leggere solo al sito. Quattro, perché una qualsiasi di esse manca o viene ignorata sul server di qualcuno.

Un file viene accettato per ciò che sono i suoi byte, non per ciò che pretende il suo nome. Un eseguibile rinominato in .jpg viene respinto alla porta: controllare l’estensione significa controllare i documenti forniti dall’aggressore stesso. I tipi accettati sono JPEG, PNG, WebP e HEIC. Il nome salvato è casuale; il nome originale del file del cliente non raggiunge mai il filesystem, perché «ayse-dogum-gunu.jpg» è il nome di una bambina e una data.

Ogni fotografia e ogni anteprima passa da un unico varco. Il tuo team è ammesso dal permesso sugli ordini di WooCommerce; il cliente dal link firmato, verificato contro quell’ordine. Un link creato per un ordine non può aprire il file di un altro. Ai file non viene mai dato un URL pubblico.

Conservazione
Un processo giornaliero cancella i caricamenti e le anteprime degli ordini completati dopo un periodo che imposti tu: sessanta giorni di serie, conservato nell’opzione mevvatelier_retention_days. L’ordine, il suo importo e la registrazione dell’approvazione restano; la fotografia no.
Cosa esce dal Suo server
Nulla da questo plugin. Dal percorso ordini non ci arriva nessuna fotografia, nessuna anteprima, nessun ordine, nessuna telemetria e nessuna chiamata di licenza. Il caveau è una cartella sul tuo disco e il registro delle approvazioni sono i metadati dei tuoi ordini.

Tenere a tempo indeterminato la foto di un bambino sul server di un negozio è una responsabilità, non una funzione. Se la promessa di conservazione fatta ai tuoi clienti è diversa da sessanta giorni, cambia l’opzione perché corrisponda a ciò che hai detto loro: il numero sulla tua pagina e il numero nel plugin devono essere lo stesso numero.

Approvazione, annullamento e diritto di recesso

Secondo il regolamento turco sulle vendite a distanza, un bene realizzato secondo le specifiche del consumatore non dà diritto di recesso una volta prodotto (Mesafeli Sözleşmeler Yönetmeliği, art. 15/1-b). MevvAtelier è costruito attorno a questo: al cliente viene detto nella schermata di approvazione, e il momento in cui acconsente viene scritto nell’ordine insieme all’approvazione.

Prima dell’approvazione non è stato prodotto nulla, quindi un annullamento ti costa un modello e nessun materiale: annulla l’ordine in WooCommerce e rimborsalo come qualsiasi altro. Dopo l’approvazione il modulo di revisione è sparito e il server rifiuta una richiesta di revisione, perché a quel punto il materiale è impegnato.

Questo descrive ciò che il plugin registra, non è consulenza legale. Il tuo contratto di vendita a distanza e il modulo di informazioni precontrattuali devono comunque dire la stessa cosa, e MevvLegal è il plugin per quella parte.

Risoluzione dei problemi

Il modulo d’ordine viene inviato e non succede nulla
Quasi sempre una copia della pagina in cache. Il modulo porta un token monouso e una pagina in cache ne distribuisce uno scaduto, che viene rifiutato in silenzio. Svuota la pagina dalla cache e verifica che gli header no-store del plugin arrivino al browser; alcune CDN li rimuovono al bordo.
Il cliente dice che il link non funziona
Tre cause, e la pagina dice quale. Passati sessanta giorni è scaduto e ne mandi uno nuovo. Se è stato copiato a mano dall’e-mail di solito manca un carattere. Se nomina un altro ordine, è stato inoltrato da un’altra e-mail.
Nell’amministrazione le fotografie appaiono come immagini rotte
Il caveau viene servito invece che filtrato: verifica che la cartella del caveau contenga ancora il suo .htaccess e l’index.php, e che il tuo host non abbia reimpostato i permessi. Se i file sono raggiungibili via URL, quella è la metà più urgente del problema.
Un caricamento viene rifiutato benché sia una fotografia
Viene letto come qualcosa che non è JPEG, PNG, WebP o HEIC. Gli screenshot da telefono e le immagini esportate da strumenti di design spesso non lo sono; risalvare in JPEG risolve. Ciò che viene controllato non è l’estensione.
Gli ordini non escono da «Model bekliyor»
Nulla li muove da solo: è un operatore a caricare l’anteprima. Se la schermata della coda è vuota per qualcuno del tuo team, verifica che abbia il permesso di modificare gli ordini del negozio; la schermata dipende da quello e non dall’essere amministratore.
Ci sono ancora vecchie fotografie sul disco
Il processo di conservazione gira su WP-Cron, che scatta solo quando qualcuno visita il sito. In un negozio tranquillo aspetta il traffico — oppure puntaci un vero cron di sistema. Verifica anche che quegli ordini siano davvero completati; gli ordini aperti non vengono mai cancellati.
I prezzi nel modulo non sono quelli che ho impostato
La tua tabella salvata non ha superato la validazione e il plugin è tornato ai valori predefiniti anziché vendere al prezzo sbagliato. C’è un avviso di amministrazione che lo dice. Ogni pacchetto ha bisogno di tutti i conteggi di persone da uno a sei, e ogni importo deve essere un numero intero non negativo in unità minori.

Quando ci scrivi, manda le versioni di WordPress, WooCommerce, PHP e del plugin, il numero d’ordine e quale delle quattro e-mail è arrivata e quale no. Non mandare le fotografie del cliente.