# Plugin WordPress

> Se connecter avec Vimine, la carte du membre et l’adhésion sur le site WordPress de l’association — sans code.

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

Le plugin WordPress **Vimine** apporte les trois éléments de base sur le site de l’association, côté serveur (aucun
jeton dans le navigateur, aucune dépendance JavaScript) :

- **Se connecter avec Vimine** — le membre se connecte avec son propre compte (OAuth 2.1 avec PKCE ; le plugin est un
  client confidentiel et échange le code avec le secret sur le serveur) ;
- **Carte** — la carte du membre connecté, sous forme d’image avec le QR (`GET /v1/me/membership/card.svg`) ;
- **Adhésion** — le formulaire d’adhésion de l’association (intégration).

## Installation

1. Dans WordPress, ouvrez *Extensions → Ajouter une extension*, cherchez « Vimine », installez et activez :
   le plugin est dans le [répertoire WordPress.org](https://wordpress.org/plugins/vimine/).
2. Dans la console Développeurs, enregistrez un client **confidentiel**. Comme redirect URI, utilisez celle qui est
   affichée sous *Réglages → Vimine* sur le site (normalement `https://yoursite/vimine-callback/`) ; choisissez les
   autorisations (au moins `profile:read membership:read`).
3. Sous *Réglages → Vimine*, saisissez l’ID client et le secret (le secret n’est plus affiché après l’enregistrement).

:::note[Mises à jour]
WordPress propose lui-même les nouvelles versions, comme pour toute extension du répertoire, et les mises à jour
automatiques s’activent depuis la page *Extensions*. Un site qui a installé le zip que proposait cette page les
reçoit de la même façon, sans réinstallation : les réglages sont conservés.
:::

## Utilisation

| Shortcode | Bloc | Ce qu’il fait |
|---|---|---|
| `[vimine_signin label="" return_to="" scope=""]` | Vimine — Connexion | un bouton « Se connecter avec Vimine » ; « Se déconnecter » quand le membre est connecté (révocation + déconnexion de Vimine aussi) |
| `[vimine_card]` | Vimine — Carte de membre | la carte du visiteur connecté ; sinon, une invitation à se connecter |
| `[vimine_enroll slug="…" height="900" lang=""]` | Vimine — Formulaire d’adhésion | le formulaire d’adhésion de l’association, dans la langue du site (si Vimine la parle, en italien sinon ; `lang` pour en choisir une) ; à une personne qui a déjà un compte Vimine, il propose *Continuer sur Vimine*, qui ouvre la page dans un nouvel onglet où elle adhère en une étape ([pourquoi un nouvel onglet](https://developers.vimine.network/fr/guides/embed-and-verify/#une-personne-qui-a-déjà-un-compte-vimine)) |
| `[vimine_events slug="…" filter="upcoming" limit="10"]` | Vimine — Événements | les événements de l’association avec les places restantes (les publics pour les visiteurs, tous pour un membre connecté) ; chaque événement renvoie à sa page sur Vimine, où se fait l’inscription ([guide](https://developers.vimine.network/fr/guides/events/)) |

Les blocs se trouvent dans l’éditeur sous « Widgets », avec les mêmes options.

## Comment fonctionne la session

De retour de la page de connexion hébergée, le plugin échange le code (vérificateur PKCE + secret), enregistre les
jetons dans un *transient* WordPress et ne donne au navigateur qu’un identifiant de session (cookie HttpOnly,
SameSite=Lax). Le jeton d’accès se rafraîchit de lui-même avec le jeton de rafraîchissement ; « Se déconnecter »
révoque le jeton de rafraîchissement et passe par le `/oauth/logout` de Vimine, pour que la session prenne fin là aussi.
Un membre sans adhésion dans l’association voit le message correspondant ; une association dont l’API n’est pas
activée obtient `api_disabled`.

## Personnalisation

La feuille de style est minimale et utilise les variables `--vimine-accent` et `--vimine-accent-contrast` ; chaque
élément porte une classe `vimine-…`. Pour quelque chose de plus riche (données du membre dans le thème, adhésions
depuis un back-office), utilisez directement l’[API](https://developers.vimine.network/api/) ou le [SDK serveur](https://developers.vimine.network/fr/sdk/server/) avec les identifiants
du plugin.
