# Plugin WordPress

> Accedi con Vimine, tessera e iscrizione sul sito WordPress dell'associazione — senza scrivere codice.

URL: https://developers.vimine.network/guides/wordpress/

Il plugin **Vimine** per WordPress porta sul sito dell'associazione le tre funzioni base, lato server (nessun
token nel browser, nessuna dipendenza JavaScript):

- **Accedi con Vimine** — il socio entra con il proprio account (OAuth 2.1 con PKCE; il plugin è un client
  riservato e scambia il codice con il secret sul server);
- **Tessera** — la tessera del socio connesso, immagine con QR (`GET /v1/me/membership/card.svg`);
- **Iscrizione** — il modulo di tesseramento dell'associazione (Embed).

## Installazione

1. In WordPress apri *Plugin → Aggiungi nuovo plugin*, cerca «Vimine», installa e attiva: il plugin è nella
   [directory di WordPress.org](https://wordpress.org/plugins/vimine/).
2. Nella console Sviluppatori registra un client **riservato**. Come URI di reindirizzamento usa quello mostrato in
   *Impostazioni → Vimine* del sito (di norma `https://tuosito/vimine-callback/`); scegli i permessi
   (almeno `profile:read membership:read`).
3. In *Impostazioni → Vimine* inserisci client ID e secret (il secret non è più mostrato dopo il salvataggio).
4. Per il modulo di iscrizione: in *Associazione › Tesseramento* aggiungi l'indirizzo del sito (`https://tuosito`) ai
   *Domini autorizzati all'incorporamento (iframe)*. Vimine mostra il modulo solo nei siti elencati lì: altrove il
   riquadro resta vuoto.

:::note[Aggiornamenti]
WordPress propone da solo le nuove versioni, come per ogni plugin della directory, e dalla pagina *Plugin* si
possono attivare gli aggiornamenti automatici. Un sito che ha installato lo zip che si scaricava da questa pagina li
riceve allo stesso modo, senza reinstallare: le impostazioni restano.
:::

## Uso

| Shortcode | Blocco | Cosa fa |
|---|---|---|
| `[vimine_signin label="" return_to="" scope=""]` | Vimine — Accedi | pulsante «Accedi con Vimine»; «Esci» quando il socio è connesso (revoca + uscita anche da Vimine) |
| `[vimine_card]` | Vimine — Tessera | la tessera del visitatore connesso; invita ad accedere se non lo è |
| `[vimine_enroll slug="…" height="900" lang="" scheme="" accent="" background="" font=""]` | Vimine — Iscrizione | il modulo di iscrizione dell'associazione, nella lingua del sito (se Vimine la parla, altrimenti in italiano; `lang` per sceglierne una); a chi ha già un account Vimine offre *Continua su Vimine*, che apre la pagina in una nuova scheda dove si aderisce in un passo ([perché una nuova scheda](https://developers.vimine.network/guides/embed-and-verify/#chi-ha-già-un-account-vimine)) |
| `[vimine_events slug="…" filter="upcoming" limit="10"]` | Vimine — Eventi | gli eventi dell'associazione con i posti disponibili (quelli pubblici per i visitatori, tutti per un socio connesso); ogni evento rimanda alla sua pagina su Vimine, dove avviene l'iscrizione ([guida](https://developers.vimine.network/guides/events/)) |

I blocchi sono nell'editor sotto «Widget», con le stesse opzioni.

## Come funziona la sessione

Al ritorno dalla pagina di accesso il plugin scambia il codice (con verifier PKCE e secret), salva i token in un
*transient* di WordPress e mette nel browser solo un identificativo di sessione (cookie HttpOnly, SameSite=Lax).
L'access token viene rinnovato da solo con il refresh token; «Esci» revoca il refresh token e passa da
`/oauth/logout` di Vimine, così la sessione termina anche lì. Un socio senza tessera nell'associazione vede il
messaggio corrispondente; un'associazione senza API attiva riceve `api_disabled`.

## Personalizzazione

Il modulo di iscrizione prende da solo i colori del tema, quando il tema li dichiara (i temi a blocchi lo fanno): lo sfondo, il colore dei pulsanti e il carattere, se è uno di quelli che il modulo serve; altrimenti è chiaro. In *Impostazioni → Vimine* si scelgono per tutto il sito lo schema colori, il colore d'accento, lo sfondo e il carattere; gli attributi `scheme`, `accent`, `background` e `font` dello shortcode, o il pannello *Aspetto* del blocco, li cambiano per un modulo solo, con i valori dell'[aspetto del modulo](https://developers.vimine.network/guides/embed-and-verify/#laspetto-del-modulo) (e `font="vimine"` per il carattere del modulo stesso).

Il foglio di stile è minimo e usa le variabili `--vimine-accent` e `--vimine-accent-contrast`; ogni elemento ha una classe
`vimine-…`. Per usi più avanzati (dati del socio nel tema, iscrizioni dal gestionale) usa direttamente
l'[API](https://developers.vimine.network/api/) o l'[SDK server](https://developers.vimine.network/sdk/server/) con le stesse credenziali del plugin.
