# Verrouillage de bloc contre verrouillage de template : la confusion classique

> Deux mécanismes de verrouillage, souvent confondus, protègent des choses différentes dans l'éditeur de site. Voici comment les distinguer et les combiner correctement.

- Auteur : WordPress Développement
- Publié le : 2023-04-17
- Mis à jour le : 2023-04-17
- Catégorie : Éditeur de site (FSE)
- URL : https://www.wpmoderne.fr/fse/verrouillage-bloc-vs-template-confusion/

## L’essentiel

- Le verrouillage de bloc agit sur un élément précis
- Le verrouillage de gabarit agit sur toute la zone de contenu
- Les deux se combinent sans se remplacer

« Tout est verrouillé, il ne peut rien casser. » C'est la promesse faite par le développeur qui a livré le site, quelques semaines avant que le logo de l'en-tête ne disparaisse purement et simplement, supprimé sans le moindre effort par un client pourtant censé n'avoir aucune marge de manœuvre. Ce genre d'incident vient presque toujours d'une confusion fréquente entre deux mécanismes distincts de l'éditeur de blocs, qui portent des noms proches mais ne protègent pas du tout la même chose.

D'un côté, le verrouillage de bloc, appliqué à un élément précis. De l'autre, le verrouillage de gabarit, appliqué à une zone entière de contenu. Confondre les deux mène régulièrement à des gabarits qui semblent protégés sur le papier mais qui laissent en réalité passer des modifications indésirables.

## Le verrouillage de bloc, élément par élément

Le verrouillage de bloc se règle depuis le menu contextuel d'un bloc individuel, en cliquant sur les trois points puis sur « Verrouiller ». Il propose trois options indépendantes : empêcher le déplacement, empêcher la suppression, empêcher les deux à la fois. Techniquement, ce réglage s'enregistre dans l'attribut `lock` du bloc, sérialisé directement dans le contenu :

```
<!-- wp:image {"lock":{"move":true,"remove":true}} -->
<figure class="wp-block-image"><img src="logo.png" alt="Logo" /></figure>
<!-- /wp:image -->
```

Ce verrouillage protège ce bloc précis, où qu'il se trouve. Mais il ne dit rien sur les blocs voisins : un utilisateur peut très bien laisser le logo intouchable tout en ajoutant, supprimant ou réorganisant librement tous les autres blocs autour de lui.

## Le verrouillage de gabarit, une zone entière

> L'essentiel à retenir : Le verrouillage de bloc agit sur un élément précis ; Le verrouillage de gabarit agit sur toute la zone de contenu ; Les deux se combinent sans se remplacer

Le verrouillage de gabarit, réglé via l'attribut `templateLock` sur un bloc Groupe ou sur un template part entier, agit à un niveau différent : il contrôle si de nouveaux blocs peuvent être insérés, supprimés ou réorganisés à l'intérieur de cette zone, indépendamment du verrouillage individuel de chaque bloc qu'elle contient.

```
<!-- wp:group {"templateLock":"all"} -->
<div class="wp-block-group">
    <!-- wp:site-logo /-->
    <!-- wp:navigation /-->
</div>
<!-- /wp:group -->
```

La valeur `all` interdit toute modification de structure (insertion, suppression, déplacement) au sein du groupe. La valeur `insert` autorise le déplacement et la modification des blocs existants mais interdit d'en ajouter de nouveaux ou d'en supprimer. La valeur `contentOnly`, plus permissive, autorise la modification du contenu (texte, image) tout en interdisant toute modification structurelle : c'est souvent le réglage le plus adapté pour un en-tête que le client doit pouvoir personnaliser sans pouvoir le démonter.

### Pourquoi les deux mécanismes ne se remplacent pas

Un template part verrouillé avec `templateLock: "all"` empêche l'ajout ou la suppression de blocs, mais si aucun verrouillage individuel n'est posé sur le bloc logo lui-même, un utilisateur qui dispose des droits d'édition du contenu (avec un réglage `contentOnly`) pourra tout de même remplacer l'image du logo par une autre. Le verrouillage de gabarit protège la structure ; le verrouillage de bloc protège le contenu spécifique d'un élément. Les deux doivent souvent se combiner pour un résultat réellement robuste.

## Combiner les deux niveaux dans un en-tête client

Pour un en-tête livré à un client qui ne doit ni réorganiser la structure ni remplacer le logo, mais qui doit pouvoir modifier les liens du menu de navigation, la combinaison recommandée ressemble à ceci :

- Le groupe englobant l'en-tête : `templateLock: "insert"`, pour interdire l'ajout ou la suppression de blocs sans bloquer leur réagencement mineur.
- Le bloc logo individuel : verrouillage complet via l'attribut `lock`, pour empêcher sa suppression ou son remplacement accidentel.
- Le bloc navigation : aucun verrouillage individuel, pour laisser le client modifier librement les liens du menu.

## Où vérifier ces réglages une fois posés

Contrairement au verrouillage de bloc, visible directement dans le menu contextuel de l'éditeur, le verrouillage de gabarit ne s'affiche pas toujours de façon évidente dans l'interface. La méthode la plus fiable pour vérifier sa présence reste l'inspection du code du gabarit via le mode « Code » de l'éditeur, ou la relecture du contenu stocké en base de données.

| Mécanisme | Attribut | Portée |
| --- | --- | --- |
| Verrouillage de bloc | `lock` | Un bloc précis |
| Verrouillage de gabarit | `templateLock` | Une zone entière |

> Un gabarit livré « verrouillé » sans avoir testé, en se connectant avec le rôle réel du client, ce qu'il est encore possible de modifier, n'est qu'une protection supposée, pas une protection vérifiée.

## En résumé

Le verrouillage de bloc et le verrouillage de gabarit répondent à des besoins différents et se combinent plutôt qu'ils ne se remplacent. La confusion entre les deux, fréquente chez les clients comme chez certains développeurs pressés, se dissipe dès qu'on se souvient que l'un protège un élément, l'autre protège une structure.
