# wp_is_block_theme() côté classique : prévenir avant un plugin bloc

> Cette fonction de WordPress 6.1 permet d'avertir un utilisateur, avant activation, qu'une extension attend un thème hybride ou bloc plutôt que le thème classique installé.

- Auteur : WordPress Développement
- Publié le : 2022-11-25
- Mis à jour le : 2022-11-25
- Catégorie : Thèmes
- URL : https://www.wpmoderne.fr/themes/wp-is-block-theme-classique-prevenir-plugin-bloc/

## L’essentiel

- wp_is_block_theme() distingue un thème bloc d'un thème classique sans ambiguïté
- Un simple avertissement avant activation évite un ticket de support
- La vérification se fait au moment de l'activation, pas après coup

« Ce plugin nécessite un thème compatible avec l'éditeur de site » : ce message d'erreur, découvert par l'utilisateur après activation d'une extension sur un thème resté classique, arrive toujours trop tard. Le mal est fait, l'extension est activée, et le support doit expliquer pourquoi rien ne fonctionne comme attendu sur la démonstration vue par l'utilisateur.

WordPress 6.1, publié en novembre 2022, introduit la fonction `wp_is_block_theme()`, qui permet de vérifier de façon fiable si le thème actuellement actif est un thème bloc au sens strict, c'est-à-dire un thème qui déclare un fichier `theme.json` et prend en charge l'éditeur de site complet. Utilisée au bon moment, cette fonction permet d'avertir l'utilisateur avant qu'il n'active une extension incompatible, plutôt qu'après.

## Ce que fait exactement wp_is_block_theme()

La fonction renvoie un booléen simple : `true` si le thème actif est un thème bloc complet, `false` dans tous les autres cas, y compris pour un thème classique qui inclurait un support partiel de fonctionnalités liées aux blocs sans être un thème bloc au sens complet du terme.

```
if ( wp_is_block_theme() ) {
    // Le thème actif prend en charge l'éditeur de site complet
} else {
    // Thème classique, ou thème hybride sans support complet
}
```

## Le cas d'usage : prévenir avant activation

Pour une extension qui ajoute des blocs personnalisés destinés à être utilisés dans l'éditeur de site (modèles, parties de modèle), il est utile d'avertir l'utilisateur si le thème actif reste un thème classique, incapable d'exploiter ces fonctionnalités. Le hook `admin_notices`, combiné à une vérification via `wp_is_block_theme()`, permet d'afficher cet avertissement directement dans l'administration, avant que l'utilisateur ne configure l'extension et ne découvre le problème plus tard.

> L'essentiel à retenir : wp_is_block_theme() distingue un thème bloc d'un thème classique sans ambiguïté ; Un simple avertissement avant activation évite un ticket de support ; La vérification se fait au moment de l'activation, pas après coup

```
function monextension_verifier_theme_bloc() {
    if ( ! wp_is_block_theme() ) {
        echo '<div class="notice notice-warning">';
        echo '<p>Cette extension exploite pleinement ses fonctionnalités ';
        echo 'uniquement avec un thème bloc. Le thème actif est un thème classique.</p>';
        echo '</div>';
    }
}
add_action( 'admin_notices', 'monextension_verifier_theme_bloc' );
```

## Adapter le message selon le contexte

Un simple avertissement générique reste utile, mais un message plus précis, qui explique concrètement ce qui ne fonctionnera pas (par exemple : « les modèles personnalisés fournis par cette extension ne sont pas disponibles avec un thème classique »), aide davantage l'utilisateur à comprendre la situation sans devoir chercher lui-même la raison du dysfonctionnement.

- Nommer précisément la fonctionnalité qui ne sera pas disponible
- Proposer, si pertinent, un lien vers la liste des thèmes blocs officiels du répertoire WordPress.org
- Éviter un ton alarmiste : le thème classique reste un choix légitime, l'avertissement informe, il ne sanctionne pas
- Afficher la notification uniquement sur les écrans pertinents, pas sur l'ensemble de l'administration

## Ne pas confondre avec une vérification de version

Cette fonction ne remplace pas une vérification de version de WordPress. Une extension qui dépend de `wp_is_block_theme()` doit également s'assurer, séparément, que la version de WordPress installée est suffisamment récente pour disposer de cette fonction elle-même, apparue avec la version 6.1. Une vérification avec `function_exists( 'wp_is_block_theme' )` avant l'appel évite une erreur fatale sur une installation plus ancienne :

```
if ( function_exists( 'wp_is_block_theme' ) && ! wp_is_block_theme() ) {
    // Avertir l'utilisateur
}
```

## Les limites de cette approche

Un thème hybride, qui mélange support de l'éditeur de site sur certains gabarits et fichiers de template PHP classiques sur d'autres, peut produire un résultat inattendu selon la façon dont il déclare son fichier `theme.json`. Dans ces cas limites, `wp_is_block_theme()` reste la source de vérité la plus fiable fournie par le cœur de WordPress, mais elle ne dispense pas de tester concrètement le comportement de l'extension sur le thème hybride en question avant de communiquer une compatibilité totale.

> Prévenir avant activation coûte quelques lignes de code et un peu d'attention portée au message affiché. Cela évite, en contrepartie, une bonne partie des tickets de support liés à une incompréhension entre thème classique et thème bloc.

## En résumé

`wp_is_block_theme()`, disponible depuis WordPress 6.1, offre un moyen fiable de distinguer un thème bloc d'un thème classique. Utilisée au moment opportun, via un avertissement dans l'administration plutôt qu'après coup, elle transforme une source récurrente de confusion utilisateur en simple message informatif, sans complexité supplémentaire pour l'auteur de l'extension.
