Ce wiki explique exactement comment :
- créer ton token API Figma,
- récupérer le File ID depuis l'URL Figma,
- préparer le dossier avec les images exportées,
- copier-coller le prompt universel tel quel pour l'envoyer ensuite dans Cursor.
1) Créer le token API Figma (figd_)
Étapes
- Connecte-toi à Figma.
- Ouvre les paramètres du compte (Settings).
- Va dans la section Personal access tokens.
- Clique sur Generate new token.
- Donne un nom clair au token (ex :
cursor-elementor-import). - Coche ces scopes :
file_content:read,library_assets:read,library_content:read,file_metadata:read. - Copie immédiatement le token généré (il commence par
figd_).
Important
- Garde ce token privé (comme un mot de passe).
- Ne le commit jamais dans Git.
- Si fuite : révoque-le et recrée-en un nouveau.
2) Récupérer le File ID Figma
Dans une URL Figma de ce type :
https://www.figma.com/design/JwlwfkUCwcky5aAC0U214j/Mon-Projet?...
Le File ID est :
JwlwfkUCwcky5aAC0U214j
Règle simple : c'est la partie entre /design/ et le / suivant.
3) Préparer le dossier de travail (images)
Avant d'envoyer le prompt dans Cursor :
- exporte les images de ta maquette Figma (PNG/JPG/WebP),
- place ces fichiers dans le dossier courant du projet,
- le prompt demandera ensuite de les lister et mapper automatiquement aux layers.
4) Prompt universel à utiliser (copier-coller tel quel)
Copie-colle ce prompt tel quel dans une nouvelle conversation Claude. Remplace uniquement les valeurs entre
{{...}}.
Pré-requis à fournir
| Élément | Quoi donner |
|---|---|
| Token API Figma | Ton token personnel (commence par figd_) |
| File ID Figma | L'ID dans l'URL : figma.com/design/{FILE_ID}/... |
| Images | Exportées depuis Figma dans le dossier de travail courant |
Le prompt
Crée un plugin WordPress qui importe en UN CLIC un site Elementor Pro complet :
- Un HEADER réutilisable (Elementor Theme Builder → Header)
- Une PAGE D'ACCUEIL avec toutes les sections
- Un FOOTER réutilisable (Elementor Theme Builder → Footer)
Tout est éditable dans Elementor, responsive tablette + mobile, pixel-perfect Figma.
=== ÉTAPE 1 : EXTRAIRE LE DESIGN DEPUIS FIGMA ===
Token API Figma : {{TON_TOKEN_FIGMA}}
File ID : {{TON_FILE_ID}}
Utilise l'API Figma avec curl pour extraire TOUTES les données du design :
curl -s -H "X-Figma-Token: {{TON_TOKEN_FIGMA}}"
"https://api.figma.com/v1/files/{{TON_FILE_ID}}"
À partir de la réponse JSON, extrais pour CHAQUE élément :
- Type (TEXT, RECTANGLE, INSTANCE, FRAME, LINE...)
- Position (x, y) et dimensions (width, height)
- Fills : couleurs hex exactes (convertir r/g/b float 0-1 → hex #RRGGBB)
- Strokes : couleur, épaisseur
- Corner radius
- Effects (drop shadow, blur)
- Pour les TEXT : fontFamily, fontSize, fontWeight, lineHeight, letterSpacing,
textAlignHorizontal, characters (contenu texte), couleur du fill
- Pour les IMAGE fills : noter le nom du layer (correspondance avec les fichiers)
Identifie le frame DESKTOP principal (le plus grand en largeur).
S'il existe un frame MOBILE (iPhone/petit), analyse-le aussi pour les breakpoints.
Note toutes les couleurs uniques, toutes les fonts utilisées, tous les espacements.
=== ÉTAPE 2 : MAPPER LES IMAGES ===
Les images exportées depuis Figma sont dans le dossier de travail courant.
Fais un `find` ou `ls` pour lister tous les .png/.jpg/.webp disponibles.
Mappe chaque image au layer Figma correspondant par son nom.
Copie-les dans le plugin sous assets/images/ avec des noms propres.
=== ÉTAPE 3 : CONVERTIR FIGMA → WEB ===
Le design Figma est en pixels haute résolution. Convertis :
- Largeur du frame Figma → max-width ~1100px web
- Tailles de police : diviser par le ratio (largeur Figma / 1100), puis ajuster
pour le web (titres 36-56px, body 15-18px, labels 14-16px)
- Espacements/paddings : même ratio, arrondir aux multiples de 4 ou 8
- Corner radius : garder tel quel si < 30px, sinon proportionner
- Les fonts système (Times New Roman, Arial...) restent telles quelles
- Les Google Fonts doivent être enqueued via wp_enqueue_style
=== ÉTAPE 4 : CONSTRUIRE LE PLUGIN ===
Structure :
{{nom-du-plugin}}/
├── {{nom-du-plugin}}.php
└── assets/
└── images/
Le fichier PHP principal doit :
1. ADMIN PAGE
- Menu admin avec bouton "Importer le site"
- Affichage erreurs + liens "Voir" / "Éditer dans Elementor" après import
- Vérifier qu'Elementor Pro est actif
2. IMPORT (sur clic du bouton) — dans cet ordre :
a. Importer toutes les images dans la médiathèque (wp_insert_attachment)
b. Créer le HEADER (Elementor Theme Builder template)
c. Créer le FOOTER (Elementor Theme Builder template)
d. Créer la PAGE D'ACCUEIL
e. Définir comme page d'accueil statique
f. wp_safe_redirect + exit
3. HEADER — Template Elementor Theme Builder
Créer un post de type 'elementor_library' avec :
- _elementor_template_type = "header"
- _elementor_data = JSON du header
- Condition d'affichage : include/general (s'affiche partout)
- Contenu : navigation avec liens, style pill actif, fond et border
fidèles au Figma
- RESPONSIVE : sur mobile, le header doit s'adapter (liens plus petits
ou masqués si nécessaire — Elementor Pro gère le responsive natif
des sections via les settings tablette/mobile de chaque widget)
Pour appliquer la condition "Afficher partout" :
update_post_meta( $id, '_elementor_conditions', ['include/general'] );
4. FOOTER — Template Elementor Theme Builder
Même principe que le header :
- _elementor_template_type = "footer"
- _elementor_conditions = ['include/general']
- Contenu : colonnes de liens, mentions légales, réseaux sociaux
- RESPONSIVE : colonnes empilées sur mobile, icônes centrées
5. PAGE D'ACCUEIL — Elementor Page
- _wp_page_template = "elementor_header_footer" (utilise le header/footer
créés au-dessus, PAS "elementor_canvas")
- _elementor_data = JSON de toutes les sections du body
Widgets Elementor Pro disponibles :
- heading, text-editor, image, button, divider, spacer
- google_maps, social-icons, icon-list
- form (widget natif Elementor Pro — PAS de HTML custom)
- nav-menu (widget natif pour la navigation dans le header)
- image-box, call-to-action
- slides, image-carousel
- posts, portfolio
Pour le FORMULAIRE : utiliser le widget Elementor Pro "form" :
widgetType = 'form'
settings = [
'form_name' => '...',
'form_fields' => [
['_id'=>'name','field_type'=>'text','field_label'=>'Nom','placeholder'=>'...','required'=>'true','width'=>'50'],
['_id'=>'tel','field_type'=>'tel','field_label'=>'Tél','placeholder'=>'...','required'=>'true','width'=>'50'],
['_id'=>'msg','field_type'=>'textarea','field_label'=>'Message','placeholder'=>'...','required'=>'true','width'=>'100'],
],
'button_text' => '...',
'button_size' => 'md',
'button_align' => 'center',
'email_to' => get_option('admin_email'),
'email_subject' => '...',
// + tous les styles : couleurs, border-radius, typography...
]
6. CSS CUSTOM (via wp_head, uniquement si nécessaire)
- Hover effects sur les cartes produits
- Animations au scroll si présentes dans la maquette
- Charger les Google Fonts
=== ÉTAPE 5 : RESPONSIVE — CRITIQUE ===
Chaque widget Elementor doit avoir ses 3 breakpoints définis :
- DESKTOP : valeurs du Figma converties
- TABLETTE (< 1024px) : tailles réduites ~80%, colonnes adaptées
- MOBILE (< 767px) : tout en 1 colonne, tailles réduites ~60%
Syntaxe Elementor pour le responsive :
'typography_font_size' => [
'unit' => 'px',
'size' => 48, // desktop
'sizes' => [
'tablet' => 36, // tablette
'mobile' => 28 // mobile
]
]
Appliquer le responsive sur :
- TOUTES les typography_font_size
- TOUS les padding de sections
- Les min_height de sections (hero 100vh desktop → 70vh mobile)
- Les gap entre colonnes
- Les width d'images
- Les margins et paddings des widgets
Pour le HEADER responsive :
- Desktop : liens en ligne horizontale
- Tablette : liens plus compacts ou sur 2 lignes
- Mobile : utiliser le widget nav-menu d'Elementor Pro qui a un
hamburger menu intégré (settings: toggle = 'burger', breakpoint = 'tablet')
Pour le FOOTER responsive :
- Desktop : 3 colonnes
- Tablette : 2 colonnes
- Mobile : 1 colonne, tout centré
Pour les GRILLES produits/images :
- Desktop : 2 colonnes (50/50)
- Mobile : 1 colonne (100%)
→ Utiliser les settings Elementor : '_column_size' => 50 desktop,
puis sur mobile Elementor empile automatiquement, mais ajouter
'padding' responsive pour les marges
=== CONTRAINTES ===
- Compatible WordPress 6.0+ et Elementor PRO
- Tout dans UN SEUL fichier PHP + le dossier images
- Les IDs Elementor doivent être uniques (préfixe court + numéro incrémental)
- HEADER et FOOTER = templates Elementor Theme Builder séparés (pas dans la page)
- La page utilise "elementor_header_footer" (PAS "elementor_canvas")
- Le formulaire utilise le widget "form" natif Elementor Pro (PAS du HTML custom)
- La navigation dans le header utilise le widget "nav-menu" d'Elementor Pro
avec hamburger automatique sur mobile
- Images dans la médiathèque (pas en URL directe du plugin)
- wp_safe_redirect + exit après l'import
- isset() avant wp_verify_nonce()
- CHAQUE widget doit avoir les valeurs responsive tablet + mobile définies
- Les _elementor_conditions sur header/footer = ['include/general']
=== NOM DU PROJET ===
Nom du plugin : {{nom-du-plugin}}
Exemple d'utilisation
Token API Figma : figd_V0vspUQb9W3fu18H-A49hzzf2jc6vhSBEmezLSld
File ID : JwlwfkUCwcky5aAC0U214j
Nom du plugin : boulangerie-starter
Nom du site : La Boulangerie du Coin
Les images doivent être dans le dossier courant (même endroit que le projet). Claude va les trouver automatiquement, les mapper aux layers Figma, et tout intégrer.
À la fin, zippe manuellement le dossier du plugin créé, puis importe ce fichier .zip dans WordPress via Extensions > Ajouter > Téléverser une extension.
