Guida per autori e web agency

Creare starter kit per SimplyCod Studio

Dal primo file JSON allo ZIP installabile: specifiche, esempi e controlli per distribuire temi aggiuntivi affidabili, portabili e ripristinabili.

Edizione 1.0Compatibile con SimplyCod Studio 0.22.0Techpaolo di Paolo Zappatore
Fondamenti

1. Introduzione

Uno starter kit non è un tema WordPress eseguibile. È un pacchetto di progetto che SimplyCod Studio importa, con pagine, media e impostazioni globali descritti in JSON.

Questa separazione rende il kit indipendente dal tema WordPress attivo e permette al plugin di conservarne una copia interna. Le pagine eliminate possono quindi essere ricreate dalla copia memorizzata senza richiedere nuovamente lo ZIP originale.

Per utenti finali

Installazione rapida, contenuti modificabili e nessuna dipendenza esterna obbligatoria.

Per web agency

Identificatori stabili, versionamento e kit riutilizzabili per più clienti.

Per marketplace

Formato controllabile, privo di codice eseguibile e adatto alla distribuzione.

Diritti e licenzeInserisci soltanto testi, immagini, font e altri materiali che puoi legalmente redistribuire. Un sito usato come ispirazione non autorizza a copiarne marchi, fotografie o contenuti.

2. Avvio rapido

  1. Crea una cartella di lavoro, per esempio studio-architettura.
  2. Aggiungi nella radice il file simplycod-kit.json.
  3. Crea le cartelle pages e media.
  4. Scrivi almeno una pagina JSON con version: 2.
  5. Inserisci le immagini locali e richiamale tramite token.
  6. Definisci design system, intestazione, footer e menu nel manifest.
  7. Comprimi il contenuto della cartella, senza una cartella contenitore aggiuntiva.
  8. Carica lo ZIP da SimplyCod Studio → Aggiungi nuovo e verifica tutte le pagine.
Pacchetto completo

Kit installabile con home, vetrina, contatti, JPG, PNG trasparente e modulo.

Scarica lo ZIP di esempio
SDK e schema

Documentazione tecnica e schema JSON inclusi nel progetto.

Apri la guida SDK
Sorgenti esempio

File leggibili e modificabili prima del confezionamento.

Apri i sorgenti

3. Struttura dello ZIP

Struttura ammessa
studio-architettura.zip
├── simplycod-kit.json
├── pages/
│   ├── home.json
│   ├── progetti.json
│   └── contatti.json
└── media/
    ├── hero.jpg
    ├── progetto-01.jpg
    └── marchio.png

Nello ZIP installabile sono ammessi il manifest, i file pagina JSON e i media supportati. Tieni documentazione, file sorgente, PSD, script e appunti fuori dallo ZIP distribuibile.

Niente cartella contenitoreAprendo lo ZIP si deve vedere subito simplycod-kit.json. Una struttura come studio-architettura/simplycod-kit.json non è valida.
LimiteValoreMotivo
Dimensione ZIP32 MBRiduce rischi e tempi di upload.
Contenuto estratto30 MBPreviene pacchetti compressi anomali.
File complessivi150Mantiene il kit gestibile.
Singolo file8 MBFavorisce media ottimizzati.
PagineDa 1 a 20Definisce l'ambito di uno starter kit.

4. Il manifest simplycod-kit.json

Il manifest identifica il prodotto, elenca le pagine e contiene la configurazione globale da applicare durante l'importazione.

simplycod-kit.json
{
  "format": "simplycod-starter-kit",
  "schema_version": 1,
  "id": "studio-architettura",
  "name": "Studio Architettura",
  "version": "1.0.0",
  "description": "Starter kit per studi professionali.",
  "author": "Nome autore",
  "homepage": "https://example.com",
  "min_plugin_version": "0.22.0",
  "home": "home",
  "pages": [
    { "key": "home", "title": "Home", "slug": "home", "layout": "pages/home.json", "status": "publish" },
    { "key": "projects", "title": "Progetti", "slug": "progetti", "layout": "pages/progetti.json", "status": "publish" },
    { "key": "contact", "title": "Contatti", "slug": "contatti", "layout": "pages/contatti.json", "status": "publish" }
  ],
  "media": {
    "hero": "media/hero.jpg",
    "brand": "media/marchio.png"
  },
  "menu": {
    "name": "Navigazione principale",
    "items": ["home", "projects", "contact"]
  },
  "design": {
    "primary_color": "#176b5b",
    "secondary_color": "#d85b43",
    "text_color": "#182321",
    "surface_color": "#ffffff",
    "font_family": "system",
    "content_width": 1180,
    "button_radius": 4
  }
}
CampoRegola
idIdentificatore permanente, minuscolo e con trattini. Non cambiarlo nelle versioni successive.
versionVersione semantica, ad esempio 1.2.0.
formatDeve essere esattamente simplycod-starter-kit.
pages[].keyChiave univoca usata da menu e token.
homeContiene la chiave della pagina da impostare come home; quella pagina deve essere pubblicata.
mediaMappa tra nomi logici e file locali.

5. Pagine e layout

Ogni file pagina descrive il canvas dell'editor. Usa version: 2 e un array sections. La pagina resta modificabile visualmente dopo l'importazione.

pages/home.json
{
  "version": 2,
  "sections": [
    {
      "background": "#10231f",
      "text_color": "#ffffff",
      "padding": 96,
      "background_image": "{{media:hero}}",
      "background_image_id": "{{media_id:hero}}",
      "background_size": "cover",
      "background_position": "center center",
      "background_position_x": 50,
      "background_position_y": 50,
      "background_attachment": "scroll",
      "overlay_color": "#10231f",
      "overlay_opacity": 58,
      "columns": [
        {
          "width": 100,
          "blocks": [
            { "type": "heading", "content": "Spazi pensati per vivere", "level": "h1" },
            { "type": "text", "content": "Progettiamo luoghi essenziali, luminosi e durevoli." },
            { "type": "button", "label": "Scopri i progetti", "url": "{{page:projects}}", "style": "primary" }
          ]
        }
      ]
    }
  ]
}
Struttura nativaLe impostazioni della sezione sono proprietà dirette; ogni colonna contiene blocks. Non racchiuderle in oggetti settings o components.

6. Sezioni e colonne

Una sezione contiene impostazioni visive e da una a più colonne. La somma delle larghezze dovrebbe essere 100. Su schermi piccoli l'editor gestisce l'impilamento delle colonne.

Sezione a due colonne
{
  "background": "#f2f6f4",
  "text_color": "#182321",
  "padding": 72,
  "columns": [
    {
      "width": 45,
      "blocks": [
        { "type": "image", "url": "{{media:portrait}}", "image_id": "{{media_id:portrait}}", "content": "Ritratto del professionista" }
      ]
    },
    {
      "width": 55,
      "blocks": [
        { "type": "heading", "content": "Un progetto su misura", "level": "h2" },
        { "type": "text", "content": "Dall'idea alla consegna, seguiamo ogni dettaglio." }
      ]
    }
  ]
}

Sfondi

Per immagini proporzionalmente diverse dall'area usa cover e scegli il punto focale con background_position. Usa contain quando l'immagine deve essere interamente visibile. background_attachment può essere scroll o fixed.

7. Componenti disponibili

GruppoTipiUso
Baseheading, text, image, video, youtube, button, divider, spacer, map, iconContenuti fondamentali.
Generaletabs, accordion, image_box, icon_box, image_carousel, gallery, icon_listStrutture ricche e raccolte.
Dati e fiduciacounter, progress, testimonial, social_iconsIndicatori, recensioni e social.
Avanzatishortcode, html, menu_anchor, formIntegrazioni e interazioni.
Galleria con media locali
{
  "type": "gallery",
  "columns": 3,
  "images": [
    { "id": "{{media_id:project_1}}", "url": "{{media:project_1}}", "alt": "Casa sul lago" },
    { "id": "{{media_id:project_2}}", "url": "{{media:project_2}}", "alt": "Interno contemporaneo" }
  ]
}
Compatibilità prima dell'effetto specialeEvita HTML o shortcode legati a plugin non inclusi nel progetto. Un kit professionale deve produrre una pagina completa appena importato.

8. Immagini e media

SimplyCod Studio accetta JPG, JPEG, PNG, GIF, WebP e AVIF. Le immagini vengono importate nella Libreria Media di WordPress. I PNG mantengono la trasparenza; WebP e AVIF dipendono dal supporto del server WordPress.

Manifest: dizionario media
"media": {
  "hero": "media/hero.jpg",
  "portrait": "media/portrait.jpg",
  "brand": "media/marchio.png",
  "project_1": "media/progetto-01.jpg"
}
Componente immagine PNG
{
  "type": "image",
  "url": "{{media:brand}}",
  "image_id": "{{media_id:brand}}",
  "content": "Marchio Studio Architettura",
  "width": 180
}
  • Compila sempre il testo alternativo per immagini informative.
  • Usa JPG o WebP per fotografie; PNG per loghi e trasparenze.
  • Ridimensiona le foto alla risoluzione realmente necessaria.
  • Usa nomi file minuscoli, senza spazi né caratteri speciali.
  • Non collegare immagini temporanee ospitate su siti esterni.
Doppio riferimento consigliatoInserisci sia l'URL con {{media:chiave}} sia l'ID con {{media_id:chiave}}. Il componente resta così stabile anche quando WordPress rigenera URL o dimensioni.

9. Token portabili

I token vengono risolti durante l'importazione. Evitano ID WordPress e URL legati al sito su cui il kit è stato creato.

TokenRisultatoEsempio
{{page:key}}URL della pagina generata{{page:contact}}
{{page_id:key}}ID WordPress della pagina{{page_id:home}}
{{media:key}}URL del media importato{{media:hero}}
{{media_id:key}}ID allegato WordPress{{media_id:brand}}
Non usare ID assolutiUn valore come image_id: 482 o un URL del sito di sviluppo non è portabile e può puntare al contenuto sbagliato sul sito destinatario.

10. Moduli nativi

Il componente form genera campi reali, effettua validazione server, usa protezioni nonce e honeypot e invia il messaggio con wp_mail().

Modulo contatti
{
  "type": "form",
  "title": "Parliamo del tuo progetto",
  "recipient": "",
  "subject": "Nuova richiesta dal sito",
  "submit_label": "Invia la richiesta",
  "success_message": "Grazie, la richiesta è stata inviata.",
  "fields": [
      { "type": "text", "name": "full_name", "label": "Nome e cognome", "required": true },
      { "type": "email", "name": "email", "label": "Email", "required": true },
      { "type": "tel", "name": "phone", "label": "Telefono" },
      { "type": "select", "name": "project_type", "label": "Tipo di progetto", "options": ["Nuovo sito", "Restyling", "E-commerce"] },
      { "type": "textarea", "name": "message", "label": "Raccontaci la tua idea", "required": true },
    { "type": "checkbox", "name": "privacy", "label": "Accetto il trattamento dei dati", "required": true }
  ]
}

Tipi supportati: text, email, tel, url, number, date, select, textarea e checkbox. I nomi dei campi devono essere univoci e compatibili con sanitize_key().

DestinatarioLascia recipient vuoto per usare l'email amministrativa di WordPress. È la scelta migliore per un kit redistribuibile.
Consegna emailIl componente invia tramite WordPress, ma la consegna dipende dalla configurazione del server. Nei siti in produzione verifica l'invio e configura SMTP quando necessario.

12. Sistema di design

Il blocco design crea una base coerente per tutte le pagine. Scegli colori con contrasto sufficiente e valori adatti sia al desktop sia al mobile.

Design globale
"design": {
  "primary_color": "#176b5b",
  "secondary_color": "#d85b43",
  "text_color": "#182321",
  "surface_color": "#ffffff",
  "font_family": "system",
  "content_width": 1180,
  "button_radius": 4,
  "canvas_template": 1
}
Font portabiliPreferisci font di sistema o assicurati di possedere i diritti e un meccanismo di caricamento compatibile. Non dare per scontato che un font commerciale sia installato.

14. Creare e validare il pacchetto

  1. Controlla che tutti i JSON siano sintatticamente validi.
  2. Verifica che ogni file citato nel manifest esista rispettando maiuscole e minuscole.
  3. Rimuovi file nascosti come .DS_Store e cartelle di sviluppo.
  4. Comprimi il contenuto della cartella, non la cartella stessa.
  5. Installa il kit in un WordPress pulito e controlla frontend, editor e mobile.
macOS / Linux
cd studio-architettura
zip -r ../studio-architettura-1.0.0.zip simplycod-kit.json pages media
Controllo contenuto
unzip -l studio-architettura-1.0.0.zip
Test decisivoNon considerare terminato un kit finché non è stato importato in un'installazione diversa da quella usata per crearlo.

15. Versioni, aggiornamenti e ripristino

Mantieni lo stesso id nelle nuove versioni e incrementa version. La copia del blueprint conservata da SimplyCod Studio permette di ricreare pagine mancanti senza disporre nuovamente dello ZIP.

ModificaVersione consigliataEsempio
Correzione testi o stilePatch1.0.0 → 1.0.1
Nuova pagina o componente compatibileMinor1.0.1 → 1.1.0
Struttura incompatibile o riprogettazioneMajor1.1.0 → 2.0.0

La reinstallazione ripristina le pagine eliminate, ma non dovrebbe sovrascrivere automaticamente le pagine esistenti che l'utente ha modificato. Progetta quindi ogni versione pensando a questo comportamento conservativo.

Rimozione del kitLa cancellazione della scheda importata elimina il blueprint memorizzato, non necessariamente i contenuti WordPress già generati. Spiega sempre questo comportamento nella documentazione commerciale.

16. Esempio completo commentato

Il pacchetto ufficiale di esempio raccoglie in un unico kit le casistiche più importanti:

  • Tre pagine con navigazione interna tramite token.
  • Fotografie JPG e un marchio PNG con trasparenza.
  • Hero con sfondo, overlay e allineamento controllato.
  • Galleria e componenti immagine con URL e ID media.
  • Modulo contatti nativo con campi, privacy e validazione.
  • Design system globale riutilizzato dalle pagine.
1. Scarica

Usalo subito come prova di importazione.

Pacchetto installabile
2. Studia

Apri i JSON sorgente e confronta manifest, pagine e media.

Cartella sorgente
3. Duplica

Cambia ID, nome, contenuti e risorse, poi crea il tuo ZIP.

Schema JSON
Metodo consigliato per le agencyMantieni una cartella sorgente sotto controllo versione e genera lo ZIP come artefatto di rilascio. Non modificare direttamente l'archivio distribuito.

17. Diagnostica

ProblemaCausa probabileSoluzione
Il kit non compareManifest fuori dalla radice o non valido.Apri lo ZIP e verifica che simplycod-kit.json sia al primo livello.
Immagine assenteChiave media errata, file mancante o nome con diversa capitalizzazione.Confronta manifest, token e percorso reale.
PNG con sfondo inattesoIl file originale non ha un canale alpha o è stato convertito.Controlla il PNG sorgente e non convertirlo in JPG.
Modulo mostrato come testoComponente non dichiarato come form o struttura campi errata.Usa il formato nativo mostrato nel capitolo 10.
Link verso il sito di sviluppoURL assoluto salvato nel JSON.Sostituiscilo con un token {{page:...}} o {{media:...}}.
Ripristino incompletoChiavi pagina cambiate tra versioni.Mantieni stabili id del kit e key delle pagine.
Email non ricevutaConfigurazione mail del server.Verifica wp_mail(), spam e SMTP del sito.

18. Checklist prima della distribuzione

  • ID del kit stabile, univoco e documentato.
  • Versione aggiornata e note di rilascio disponibili.
  • Da 1 a 20 pagine, tutte presenti e valide.
  • Nessun URL o ID WordPress del sito di sviluppo.
  • Media locali ottimizzati, inclusi test JPG e PNG.
  • Test alternativi delle immagini compilati.
  • Menu, home, pulsanti e ancore verificati.
  • Moduli testati, anche con errori di validazione.
  • Header e footer controllati su desktop e mobile.
  • Ripristino di una pagina eliminata verificato.
  • ZIP entro i limiti e privo di file non ammessi.
  • Licenze dei materiali compatibili con la distribuzione.
Pronto per la pubblicazioneQuando tutti i controlli sono superati, conserva sia la cartella sorgente sia lo ZIP finale con numero di versione. Il pacchetto è pronto per essere distribuito gratuitamente o venduto.