# Nonce

> Jeton unique et temporaire généré par WordPress pour vérifier qu'une action provient bien du formulaire ou du lien d'origine, et non d'un tiers.

- Auteur : Clément Hadrot
- Publié le : 2026-09-25
- Mis à jour le : 2026-09-25
- URL : https://wpmoderne.dev.wordpress-developpement.fr/lexique/nonce/

Contrairement à ce que son orthographe laisse penser, un nonce WordPress n'est pas garanti à usage unique strict ni parfaitement imprévisible : c'est un jeton lié à une action précise, à l'utilisateur courant et à une fenêtre de temps limitée, destiné à confirmer qu'une requête provient bien de l'interface légitime plutôt que d'un site tiers qui tenterait de la reproduire.

## Fonctionnement dans WordPress

On génère un nonce avec `wp_create_nonce('mon_action')` ou on l'insère directement dans un formulaire avec `wp_nonce_field('mon_action')`. À la réception, on le vérifie avec `wp_verify_nonce($nonce, 'mon_action')`, qui renvoie une valeur non nulle si le jeton est valide et correspond bien à l'action attendue.

## Exemple

```
$url = wp_nonce_url(
    admin_url('admin-post.php?action=wpm_export'),
    'wpm_export_action'
);

// côté traitement
if (!wp_verify_nonce($_GET['_wpnonce'] ?? '', 'wpm_export_action')) {
    wp_die(__('Lien expiré ou invalide.', 'wpm'));
}
```

## Pièges fréquents

Un nonce n'est pas un mécanisme d'autorisation : il prouve qu'une requête vient du bon formulaire, mais ne vérifie en rien que l'utilisateur a le droit d'effectuer l'action demandée. Il faut donc toujours l'associer à un contrôle de capacité via `current_user_can()`, sans quoi un utilisateur légitime mais non autorisé pourrait tout de même déclencher l'action en récupérant un nonce valide généré pour lui. Sa durée de vie par défaut, généralement de 24 à 48 heures, explique aussi pourquoi un formulaire resté ouvert trop longtemps dans un onglet peut afficher un message d'erreur au moment de la validation.
