Le WordPress d'aujourd'hui, décodé pour les développeurs

Thèmes

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é.

Par WordPress Développement • 25 novembre 2022 • 4 min de lecture • Aucun commentaire
wp_is_block_theme() côté classique : prévenir avant un plugin bloc

« 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi