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

Thèmes

Requires Plugins : un en-tête de plugin, pas (encore) de thème

L'en-tête Requires Plugins de WordPress 6.5 déclare une dépendance entre extensions, mais ne concerne pas les thèmes : voici ce qu'un thème peut réellement faire.

Par Clément Hadrot • 20 mai 2024 • 4 min de lecture • Aucun commentaire
Requires Plugins : un en-tête de plugin, pas (encore) de thème

« Plugin dependencies are declared using the Requires Plugins header » — c’est la formulation retenue par la documentation officielle de WordPress pour présenter cette fonctionnalité arrivée avec la version 6.5, en avril 2024. Le terme employé n’est pas anodin : cette dépendance concerne les extensions entre elles, pas les thèmes. Un point qui mérite d’être clarifié, tant la confusion revient régulièrement sur des projets où l’on cherche à faire déclarer par un thème sa propre dépendance à une extension.

Voici ce que fait réellement cet en-tête, pourquoi il ne s’applique pas à style.css, et comment un thème peut malgré tout signaler qu’une extension lui est nécessaire.

Ce que Requires Plugins fait réellement

L’en-tête Requires Plugins se déclare dans le commentaire d’en-tête du fichier principal d’une extension, avec la liste des identifiants de slugs des extensions requises, séparés par des virgules.

/**
 * Plugin Name: Extension de réservation
 * Requires Plugins: woocommerce, advanced-custom-fields
 */

Quand cette extension est activée sans que ses dépendances le soient, WordPress bloque l’activation et affiche un message explicite dans l’écran des extensions, avec un lien direct pour installer ou activer les dépendances manquantes. C’est un mécanisme entièrement porté par le cœur, sans bibliothèque tierce à charger.

L'essentiel à retenir : Requires Plugins existe uniquement dans l'en-tête d'un plugin ; Un thème ne peut pas déclarer cette dépendance nativement ; La vérification côté thème reste manuelle, via un hook admin

Pourquoi les thèmes en sont exclus

Le fichier style.css d’un thème accepte de nombreux en-têtes (Theme Name, Template, Requires at least, Requires PHP), mais Requires Plugins n’en fait pas partie. Le mécanisme d’activation d’un thème ne suit pas le même circuit que celui d’une extension dans l’administration, et le cœur de WordPress ne lit tout simplement pas cet en-tête dans le contexte d’un thème.

Un développeur qui ajoute manuellement cette ligne dans le style.css de son thème ne provoque aucune erreur, mais l’en-tête reste totalement ignoré par WordPress : aucun blocage, aucun message, aucune vérification. C’est une déclaration silencieuse, purement documentaire pour qui lirait le fichier source.

Ce qu’un thème peut faire à la place

Pour un thème qui a réellement besoin d’une extension (par exemple un thème conçu spécifiquement pour fonctionner avec WooCommerce), la vérification doit se faire par du code, généralement à l’activation du thème via le hook after_switch_theme.

add_action( 'after_switch_theme', function () {
    if ( ! class_exists( 'WooCommerce' ) ) {
        add_action( 'admin_notices', function () {
            echo '<div class="notice notice-warning"><p>';
            echo 'Ce thème nécessite l\'extension WooCommerce, actuellement non activée.';
            echo '</p></div>';
        } );
    }
} );

Cette approche affiche un avertissement clair dans l’administration, sans bloquer l’activation du thème — un choix volontaire, car bloquer un changement de thème est une expérience beaucoup plus intrusive que bloquer l’activation d’une simple extension.

Le cas des bibliothèques tierces d’activation groupée

Avant l’arrivée de Requires Plugins, certains thèmes premium embarquaient une bibliothèque tierce pour proposer l’installation groupée d’extensions recommandées à l’activation. Cette pratique reste possible et répandue, mais elle n’a aucun lien avec l’en-tête natif du cœur : elle repose sur du code entièrement fourni par le thème lui-même, avec ses propres écrans d’installation.

  • Un thème peut suggérer des extensions sans les rendre obligatoires, via un écran de bienvenue personnalisé.
  • Un thème peut vérifier la présence d’une extension à chaque chargement, via class_exists() ou function_exists(), plutôt qu’une seule fois à l’activation.
  • Aucune de ces approches ne bénéficie de l’écran natif de gestion des dépendances réservé aux extensions.

Notre verdict

Il faut retenir une distinction simple : Requires Plugins est un mécanisme d’extension à extension, porté nativement par le cœur depuis la version 6.5. Un thème qui dépend d’une extension doit continuer à vérifier sa présence par du code, généralement via after_switch_theme et un message d’administration, sans espérer qu’un en-tête de style.css fasse le travail à sa place.

Pour aller plus loin sur ce mécanisme côté extensions, la documentation officielle sur les en-têtes de plugin détaille la syntaxe exacte attendue par Requires Plugins.

Partager :

À propos de l'auteur

Clément Hadrot

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

Voir tous ses articles

Dans la même veine

À lire aussi