# Patterns de démarrage : proposer des mises en page à la création d’une page

> Plutôt qu'une page blanche décourageante, un thème peut proposer des mises en page prêtes à personnaliser dès la création. Déclaration précise avec blockTypes et postTypes.

- Auteur : Clément Hadrot
- Publié le : 2023-02-16
- Mis à jour le : 2023-02-16
- Catégorie : FSE
- URL : https://wpmoderne.dev.wordpress-developpement.fr/fse/patterns-demarrage-mises-en-page-creation-page/

## L’essentiel

- blockTypes cible le contexte où le pattern doit apparaître
- postTypes restreint la proposition à certains types de contenu
- Un pattern de démarrage remplace tout le contenu initial de la page

Une rédactrice qui découvre l'éditeur de blocs pour la première fois se retrouve souvent devant une page blanche, sans repère sur la façon de structurer son contenu. Sur un site associatif que l'on accompagne, on a résolu ce problème en proposant des patterns de démarrage : dès la création d'une nouvelle page, l'éditeur affiche désormais un choix de mises en page prêtes à personnaliser plutôt qu'un canevas vide.

Cette fonctionnalité repose sur un détail d'enregistrement facile à manquer dans la documentation : l'attribut `blockTypes`, qui indique à WordPress dans quel contexte proposer le pattern.

## Déclarer un pattern comme suggestion de démarrage

Un pattern classique s'enregistre avec `register_block_pattern()`. Pour qu'il apparaisse spécifiquement comme suggestion à la création d'une page, il faut ajouter la clé `blockTypes` avec la valeur `core/post-content` :

```
register_block_pattern( 'mon-theme/page-demarrage-service', array(
    'title'      => __( 'Présentation de service', 'mon-theme' ),
    'categories' => array( 'mon-theme' ),
    'blockTypes' => array( 'core/post-content' ),
    'content'    => '<!-- wp:heading --><h2>Nos services</h2><!-- /wp:heading -->',
) );
```

## Restreindre la proposition à un type de contenu

> L'essentiel à retenir : blockTypes cible le contexte où le pattern doit apparaître ; postTypes restreint la proposition à certains types de contenu ; Un pattern de démarrage remplace tout le contenu initial de la page

Sur un site combinant des pages classiques et un type de contenu personnalisé `evenement`, il devient vite gênant que tous les patterns de démarrage s'affichent partout, sans distinction. L'attribut `postTypes` permet de restreindre la proposition à un ou plusieurs types de contenu précis :

```
register_block_pattern( 'mon-theme/evenement-demarrage', array(
    'title'      => __( 'Fiche événement', 'mon-theme' ),
    'blockTypes' => array( 'core/post-content' ),
    'postTypes'  => array( 'evenement' ),
    'content'    => '<!-- wp:paragraph --><p>Date, lieu, description...</p><!-- /wp:paragraph -->',
) );
```

## Ce que le pattern remplace exactement

Un point mérite d'être précisé : sélectionner un pattern de démarrage remplace l'intégralité du contenu initial de la page, matérialisé par le bloc `core/post-content` dans le template. Ce n'est donc pas un ajout ponctuel, mais bien une structure de départ complète, que la rédactrice peut ensuite modifier librement, bloc par bloc.

## Retour d'usage sur le site associatif

- Deux patterns de démarrage ont suffi à couvrir la majorité des besoins éditoriaux courants.
- Le temps de création d'une nouvelle page s'est nettement réduit, l'équipe partant d'une base cohérente plutôt que d'une page vide.
- Les demandes d'assistance liées à la mise en page des nouvelles pages ont quasiment disparu.

## Une limite à connaître

Ces patterns de démarrage ne s'affichent que sur une page fraîchement créée et vide. Ils n'ont aucun effet sur une page existante : il n'existe pas, à ce jour, de mécanisme natif pour réappliquer un pattern de démarrage sur du contenu déjà rédigé sans passer par un remplacement manuel.

## Choisir les bonnes catégories pour ne pas les mélanger

Un détail facile à négliger : sans catégorie déclarée explicitement via l'attribut `categories`, un pattern de démarrage se retrouve mélangé aux autres patterns génériques du thème dans l'inserteur classique, en plus d'apparaître comme suggestion de départ. Sur ce projet, on a choisi de créer une catégorie dédiée, `demarrage-page`, pour que ces patterns restent facilement identifiables même en dehors de leur contexte d'apparition automatique.

## Pour aller plus loin

Cette fonctionnalité, relativement discrète dans la documentation, change concrètement l'accueil réservé à un utilisateur non technique face à l'éditeur. Sur un projet où plusieurs profils rédigent du contenu, définir deux ou trois patterns de démarrage bien pensés vaut souvent mieux qu'un long guide d'utilisation à lire avant de commencer.
