# Bulles & frometons — guide WordPress

Version 3.2.0 · thème + extension de contenus · septembre 2026.

## Installation

Le pack contient deux ZIP à installer séparément. Le ZIP du pack complet n’est pas lui-même un thème.

1. Dans **Apparence → Thèmes → Ajouter → Téléverser un thème**, installez puis activez `bulles-frometons-wordpress.zip`.
2. Dans **Extensions → Ajouter → Téléverser une extension**, installez puis activez `bulles-frometons-core.zip`.
3. Ouvrez **Bulles & frometons → Installer les pages**. Cliquez sur **Créer les pages manquantes**. Les articles, pages et menus existants sont conservés.
4. Sur une installation neuve, la page d’accueil et le journal sont affectés automatiquement. Si un accueil existe déjà, cochez l’option proposée uniquement si vous voulez le remplacer.
5. Vérifiez **Réglages → Permaliens** et enregistrez les réglages. Conservez la structure de vos anciennes adresses lors de la reprise d’un blog.
6. Ouvrez **Apparence → Personnaliser → Bulles & frometons** pour les couleurs, les illustrations, le portrait, les textes et l’ordre des sections.

Prérequis déclarés : WordPress 6.6 ou supérieur et PHP 7.4 minimum. Validation exécutée sous WordPress 6.6.7 et PHP 8.3.33. Une installation de test permet de vérifier aussi vos extensions et votre hébergement.

## Ajouter une recette dans le back-office

1. Ouvrez **Recettes → Toutes les recettes → Ajouter une recette**.
2. Remplacez « Nouvelle recette » par votre titre. Écrivez votre introduction et vos conseils dans l’éditeur de blocs WordPress.
3. Dans **Bulles & frometons — détails et référencement**, complétez la fiche recette : fromage AOP, accord boisson facultatif, saison, difficulté, préparation, cuisson et portions.
4. Ajoutez les ingrédients, un par ligne, en précisant les quantités. Les boutons **+**, **↑**, **↓** et **×** permettent d’ajouter, déplacer et retirer des lignes.
5. Rédigez les étapes dans le même panneau, une étape par bloc.
6. Choisissez les producteurs recommandés si vous le souhaitez. Renseignez le titre SEO et la description.
7. Dans le panneau **Article → Image mise en avant**, ajoutez votre photo et son texte alternatif depuis la médiathèque.
8. Utilisez **Aperçu**, puis **Enregistrer en brouillon** ou **Publier**.

La fiche publique affiche les temps, les portions, la difficulté, les ingrédients à cocher et les étapes numérotées. Elle comprend des boutons pour accéder directement à la recette et l’imprimer. Les étoiles représentent la difficulté, jamais des avis clients.

Les recettes restent des articles WordPress. Ce choix conserve les fonctionnalités natives, les catégories, la recherche, les commentaires et les adresses existantes. Vous pouvez transformer un article existant en recette en cochant **Cet article est une recette**, puis en complétant sa fiche. Les champs structurés sont enregistrés dans les révisions WordPress ; le contenu ne dépend pas du thème pour rester stocké.

## Import rapide en JSON, sans images

Ouvrez **Recettes → Import / export JSON**.

1. Téléchargez le modèle ou utilisez `modele-recettes-bf.json`, fourni dans le pack.
2. Remplacez les exemples par vos recettes réelles. Le modèle est un gabarit, pas une recette à publier.
3. Choisissez un fichier `.json` **ou** collez le JSON dans la zone de texte.
4. Choisissez **Enregistrer en brouillons** (par défaut) ou **Publier les recettes**.
5. Cliquez sur **Vérifier le JSON**. Le tableau distingue les recettes valides, les doublons et les erreurs.
6. Cliquez sur **Importer…** pour importer les recettes valides. Les autres entrées sont ignorées et leur motif est affiché.
7. Ajoutez les photos séparément dans la médiathèque et affectez-les comme images mises en avant.

Limites : **100 recettes et 2 Mo par import**. L’aperçu expire après 20 minutes. L’import ne récupère aucune image, URL d’image ou pièce jointe, même si ces champs apparaissent dans le JSON.

Champs du format :

| Champ | Format | Usage |
| --- | --- | --- |
| `id` | Texte stable | Identifiant externe ; recommandé pour retrouver les doublons |
| `titre` | Texte | Obligatoire |
| `slug` | Texte | Adresse de la recette ; générée à partir du titre si absent |
| `introduction` | Texte / Markdown simple | Introduction et conseils |
| `fromage_aop` | Texte | Fromage mis à l’honneur |
| `accord_boisson` | Texte | Facultatif |
| `saisons` | Liste de textes | Ex. `['Printemps', 'Été']` ; utilisez des guillemets doubles en JSON |
| `difficulte` | Entier de 1 à 5 | Facultatif |
| `preparation_minutes`, `cuisson_minutes` | Entiers positifs ou zéro | Facultatifs |
| `portions` | Texte | Ex. « 4 personnes » |
| `ingredients` | Liste de textes | Obligatoire, quantités incluses |
| `etapes` | Liste de textes | Obligatoire, une étape par élément |
| `producteurs_recommandes` | Liste de noms | Facultatif ; rapprochement avec les producteurs déjà créés |
| `seo.titre`, `seo.description` | Textes | Facultatifs |

Le format complet est un objet avec `schema_version: 1` et une liste `recettes`. Une liste seule ou un objet recette seul sont aussi acceptés. Les équivalents anglais principaux (`title`, `steps`, `drink`, `prep_minutes`…) sont pris en charge.

L’identifiant doit rester le même lors d’un nouvel export. Si `id` est absent, le slug sert d’identifiant. Un identifiant déjà importé ou une adresse déjà utilisée entraîne un **passage sans modification** : aucun texte existant n’est écrasé. Deux lignes du même fichier ayant le même identifiant ou le même slug sont aussi détectées. Modifier une recette existante se fait dans son éditeur WordPress.

L’import JSON est accessible aux personnes autorisées à rédiger des articles. La publication directe nécessite le droit WordPress de publier. Un contributeur peut importer des brouillons.

## Export JSON

Dans le même écran, **Exporter vos recettes** produit des lots de 100 recettes au maximum. L’export comprend les ingrédients, étapes, temps, accords, producteurs et métadonnées SEO, **sans images**. L’introduction est exportée en texte brut : cet export ne remplace pas une sauvegarde WordPress et ne conserve pas la mise en forme complète des blocs.

## Tally et demandes d’atelier

Le formulaire `https://tally.so/r/w2r1Jp` est préconfiguré et intégré directement à la page de réservation. L’iframe utilise les paramètres fournis, dont la hauteur dynamique. Un lien permet aussi de l’ouvrir dans un nouvel onglet.

Les réglages sont dans **Bulles & frometons → Formulaires et contact**. Vous pouvez remplacer ce lien et configurer des formulaires distincts pour les partenariats et le contact. Sans formulaire distinct, le visiteur est invité à échanger sur Instagram ou via l’adresse e-mail configurée.

Les pages particuliers, entreprises et mariages transmettent le paramètre `occasion` lorsqu’elles conduisent vers la réservation. Pour exploiter ce paramètre dans Tally, configurez un champ caché portant ce nom. Il ne présélectionne pas automatiquement une question visible sans configuration du formulaire.

L’atelier est une demande de devis : 1 h 30, 6 à 12 personnes, selon groupe et lieu, avec alternative sans alcool. La validation de la réservation intervient après votre échange et votre confirmation. Il n’y a ni paiement en ligne, ni calendrier bloquant des créneaux automatiquement. Aucun envoi de formulaire réel n’a été effectué pendant les tests.

## Producteurs et sélections

Dans **Producteurs**, créez la fiche, ajoutez une photo, une commune, l’adresse publique, les coordonnées latitude / longitude, les produits et le site web. La case **Partenaire B&F** distingue les partenariats établis des coups de cœur. La carte affiche les producteurs publiés dont les coordonnées se situent dans son emprise. Recherche, filtre de production, partenaires, zoom et déplacement sont inclus.

Dans **Sélections B&F**, présentez les produits et associez les producteurs. Les sélections sont des vitrines éditoriales, sans achat en ligne. Aucun faux producteur ni faux partenariat n’est installé.

## Publier depuis Notion une seule fois

L’extension contient une connexion serveur à l’API Notion, configurable dans **Bulles & frometons → Publication depuis Notion**. Elle est désactivée au départ.

Renseignez la connexion, l’URL ou l’identifiant de la base/source, le nom de votre propriété de validation (par défaut « Statut »), son type et la valeur correspondant à « Prête ». Donnez à la connexion Notion accès uniquement à la base voulue. Le secret peut aussi être défini avec `BF_NOTION_TOKEN` dans la configuration serveur.

Les recettes prêtes sont publiées au passage de la tâche WordPress, prévue toutes les 15 minutes. WP-Cron dépend de la fréquentation ; votre hébergeur peut déclencher les tâches à intervalle régulier. Chaque passage traite jusqu’à cinq pages, puis poursuit au passage suivant.

Une recette déjà importée ne sera jamais mise à jour depuis Notion, ni recréée après suppression dans WordPress. Les médias Notion ne sont pas téléchargés. Ajoutez les photos manuellement. Accord boisson et producteurs restent facultatifs. Si un producteur n’est pas identifié exactement, le back-office affiche jusqu’à deux candidats avec leur commune pour vous laisser choisir.

La connexion réelle à votre base Notion n’a pas été configurée ni testée avec vos identifiants. L’import Markdown, la protection contre les doublons et l’absence de recréation après mise à la corbeille ont été testés localement. Pour un contenu récupéré via MCP, l’import Markdown manuel accepte l’identifiant brut extrait de son URL et le frontmatter YAML.

## Personnalisation du thème

Le personnalisateur permet de modifier :

- Les titres et textes principaux de l’accueil et des accords.
- Le portrait, le port, les vergers et l’illustration des fromages.
- Les couleurs principales, le logo, l’icône et la largeur du contenu.
- L’ordre des sections avec les flèches, leur présence et leur visibilité.
- Les animations au démarrage, la vie du port en SVG et le lien Instagram.

Les contenus des pages s’éditent avec l’éditeur de blocs. L’accueil peut également afficher les blocs libres ajoutés à sa page, dans la section « Les blocs de la page d’accueil ». Le thème comprend les modèles page, article/recette, producteur, sélection, journal, archives, recherche, commentaires et erreur 404.

Les animations respectent le réglage système de réduction du mouvement. Les fragments animés du port sont calibrés pour l’image d’origine et se désactivent si vous remplacez ce décor. Les illustrations d’origine sont conservées. Les effets donnent de la profondeur en CSS/WebGL ; il ne s’agit pas d’un modèle de ville 3D exportable.

Un thème enfant est fourni pour les adaptations de code. Installez d’abord le thème parent, puis le thème enfant si vous souhaitez l’utiliser. Pour les réglages ordinaires, le personnalisateur suffit.

## Reprendre le blog existant

Le thème n’importe pas des recettes qui ne lui ont pas été fournies. Sur votre WordPress existant, les articles restent en place. Pour migrer depuis une autre installation, utilisez un export WordPress ou l’import JSON pour les recettes structurées. Les anciens textes ne sont pas remplacés par des exemples.

Avant d’activer Notion, associez les articles déjà présents à leur identifiant Notion dans le panneau prévu, pour éviter une deuxième création. Les collisions de slug sont signalées et ne provoquent jamais un remplacement silencieux.

## Référencement et informations de l’entreprise

Titres et descriptions peuvent être renseignés par page ou recette. L’extension évite de doubler les titres/descriptions quand elle reconnaît Yoast, Rank Math, AIOSEO, SEOPress ou The SEO Framework. Les données Recipe sont produites uniquement si la recette possède une image mise en avant, des ingrédients et des étapes. Vous pouvez les désactiver si une autre extension les produit déjà. Aucun classement Google ni résultat enrichi n’est garanti.

Les pages légales sont créées en brouillon. Complétez vos véritables coordonnées, les informations d’hébergement, la conservation des données et les modalités de réservation, puis publiez-les. Les liens du pied de page apparaissent après publication.

## Contrôles effectués

Activation réelle du thème et de l’extension dans WordPress 6.6.7 / PHP 8.3.33, génération des pages, conservation d’un article existant, affichage des neuf modèles, sauvegarde des recettes, contrôle des permissions, import/export JSON, validation des formats et volumes, doublons, import Markdown Notion unique et données structurées. 67 vérifications ont réussi sans avertissement PHP provenant du thème ou de l’extension. Contrôle visuel complémentaire des sorties HTML et des interactions de saisie dans un navigateur.

Le site existant, ses extensions et les services externes nécessitent leurs propres réglages. Aucun contenu réel de votre blog ni aucune base Notion inaccessible n’est présenté comme migré.

## Références techniques

- Documentation des thèmes WordPress : https://developer.wordpress.org/themes/
- Champs d’édition WordPress : https://developer.wordpress.org/reference/functions/add_meta_box/
- Données structurées des recettes : https://developers.google.com/search/docs/appearance/structured-data/recipe
- Intégration Tally : https://tally.so/help/embed-your-form
- API Notion : https://developers.notion.com/reference/intro
