Plugin WordPress di Piazza in Festa: il calendario degli eventi dei comuni italiani da mettere sul proprio sito
Find a file
2026-09-04 16:33:50 +02:00
assets feat: prima versione del plugin, blocco e shortcode con iframe stampato lato server 2026-09-04 15:32:47 +02:00
blocks/eventi feat: il widget ha tre aspetti (elenco, schede con locandina, carosello) e i comuni si tagliano al limite del servizio 2026-09-04 16:33:50 +02:00
includes feat: il widget ha tre aspetti (elenco, schede con locandina, carosello) e i comuni si tagliano al limite del servizio 2026-09-04 16:33:50 +02:00
languages feat: il widget ha tre aspetti (elenco, schede con locandina, carosello) e i comuni si tagliano al limite del servizio 2026-09-04 16:33:50 +02:00
.gitignore feat: prima versione del plugin, blocco e shortcode con iframe stampato lato server 2026-09-04 15:32:47 +02:00
build.sh feat: prima versione del plugin, blocco e shortcode con iframe stampato lato server 2026-09-04 15:32:47 +02:00
LICENSE feat: prima versione del plugin, blocco e shortcode con iframe stampato lato server 2026-09-04 15:32:47 +02:00
piazza-in-festa.php feat: prima versione del plugin, blocco e shortcode con iframe stampato lato server 2026-09-04 15:32:47 +02:00
README.md feat: prima versione del plugin, blocco e shortcode con iframe stampato lato server 2026-09-04 15:32:47 +02:00
readme.txt feat: prima versione del plugin, blocco e shortcode con iframe stampato lato server 2026-09-04 15:32:47 +02:00
uninstall.php feat: prima versione del plugin, blocco e shortcode con iframe stampato lato server 2026-09-04 15:32:47 +02:00

Piazza in Festa, plugin WordPress

Il calendario degli eventi dei comuni italiani dentro un sito WordPress: un blocco, uno shortcode, si aggiorna da solo.

E' il terzo modo di consumare il widget di piazzainfesta.it, dopo lo snippet <script> e l'iframe a mano. Esiste perche' WordPress filtra i tag <script> e <iframe> in base ai permessi: passano solo per gli amministratori di installazioni self-hosted, mentre il redattore che nella pratica incolla le cose se li vede sparire senza spiegazioni. Il plugin stampa l'iframe lato server, quindi non c'e' niente da filtrare e funziona per chiunque possa scrivere un articolo.

Come e' fatto

File Cosa fa
piazza-in-festa.php header del plugin, costanti, registrazione degli asset
includes/render.php costruisce l'URL del widget e stampa l'iframe. Unico posto dove si sanifica e unico posto che produce markup
includes/shortcode.php [piazza-in-festa comuni="alba,barolo" limite="5"]
includes/block.php blocco dinamico: il markup lo fa PHP a ogni caricamento, quindi gli eventi sono sempre quelli di oggi
includes/settings.php Impostazioni > Piazza in Festa, un campo solo: la chiave per la versione senza marchio
blocks/eventi/index.js pannello dell'editor, wp.element.createElement senza JSX e senza build step: quello che leggi e' quello che gira
assets/js/resize.js ascolta l'altezza che arriva da dentro l'iframe e adatta il riquadro

Niente build: non c'e' npm, non c'e' webpack, non c'e' codice minificato. E' una richiesta esplicita delle linee guida di WordPress.org (niente sorgenti nascoste) ed e' anche comodo per noi.

Vincoli da non rompere

Sono le regole che decidono se il plugin resta nella directory:

  • Niente limitazioni artificiali (linee guida 5 e 6). Ogni funzione del plugin funziona senza chiave. La chiave e' un'opzione del servizio: la inoltra e basta, non abilita niente nel codice.
  • Niente codice eseguibile scaricato da fuori (linea guida 8). Il JS di resize e' locale, non e' il nostro /widget.js remoto. Se un domani serve altro JS, va nel plugin, non caricato dal nostro dominio.
  • Servizio esterno dichiarato. La sezione == External services == del readme.txt dice cosa parte dal browser del visitatore e verso dove. Se cambiano i parametri inviati, si aggiorna quella sezione.
  • Tutto sanificato e tutto in escape, prefisso pinfesta_ su ogni funzione e opzione.

Build

./build.sh          # -> dist/piazza-in-festa.zip

Lo zip contiene una sola cartella piazza-in-festa/, ed e' quello che si carica sia su WordPress.org sia in "Aggiungi plugin > Carica plugin".

Traduzioni

Le stringhe sorgente sono in inglese (e' la lingua della directory), l'italiano e' in languages/. Le stringhe PHP stanno nel .mo, quelle dell'editor in un .json a parte perche' vivono in JavaScript. Dopo aver toccato le stringhe:

msgfmt languages/piazza-in-festa-it_IT.po -o languages/piazza-in-festa-it_IT.mo

e rigenera i due .json (stesso contenuto, due nomi: WordPress cerca prima per handle dello script, poi per md5 del percorso).

Pubblicazione su WordPress.org

Lo slug lo decide il campo Plugin Name alla prima revisione e non si cambia piu' dopo l'approvazione. Dopo il via libera si lavora su SVN: trunk/ piu' un tag per versione, e .wordpress-org/ per icona e banner.