
🔧 WordPress : comment afficher un widget avec un shortcode n'importe où sur votre site
Vous avez besoin d’un formulaire d’abonnement non pas dans la barre latérale, mais en plein milieu d’un article. Ou d’un widget de catalogue WooCommerce sur une page qui n’a pas de barre latérale du tout. Vous allez dans l’administration, cherchez un bloc, et WordPress vous dit: les widgets ne vivent que dans les zones de thème enregistrées. Point final.
La limitation est architecturale: le système de widgets est lié à sidebar-1, footer-widgets et aux autres zones définies dans le thème. Le contenu des articles est pour lui un territoire étranger. Vous pouvez contourner cela, mais il n’existe pas d’option standard «insérer un widget ici» dans le cœur.
Un shortcode pour widgets résout le problème en une seule ligne. Pas besoin de créer une zone séparée, pas de thème enfant, pas d’édition de template. Voici comment cela fonctionne en 2026: une extension prête à l’emploi, tous les paramètres et une alternative PHP native pour les développeurs.
💡 Aperçu rapide:
- Installez WP Anywhere Widgets, l’extension génère un shortcode pour tout widget enregistré.
- Insérez le shortcode dans un article, une page, une barre latérale ou un template PHP du thème.
- Configurez le titre, le conteneur HTML et les classes CSS via les paramètres du shortcode.
- Pour les projets sans extension tierce, utilisez la fonction native
the_widget().
Pourquoi vous avez besoin d’un shortcode pour widgets
WordPress ne vous permet pas d’afficher un widget à l’intérieur du contenu d’un article avec les outils standards. Le système de widgets ne fonctionne qu’au sein des zones de thème enregistrées, et tout ce qui se trouve en dehors de ces frontières n’existe pas pour lui.
En pratique, le besoin se présente dans trois scénarios:
Formulaire d’abonnement dans un guide long. La barre latérale a défilé hors de vue, le lecteur ne voit plus le formulaire. Un shortcode maintient l’appel à l’action directement dans le corps de l’article, sous ses yeux.
Widget WooCommerce sur une page personnalisée. La page est construite sans barre latérale, mais les filtres produits ou la recherche (
[woocommerce_product_search]) doivent s’y trouver.Bloc dynamique «Articles similaires» dans le template single.php. Le thème n’a pas prévu de zone avant les commentaires. Un shortcode appelé depuis
functions.phpplace le widget n’importe où sans toucher aux templates.
Auparavant, l’extension Widget Shortcode gérait cette tâche: un outil simple qui générait [widget id="text-1"] pour tout widget enregistré. En janvier 2023, elle a été fermée en raison d’une vulnérabilité non résolue. Le successeur direct est WP Anywhere Widgets.
WP Anywhere Widgets: générateur de shortcode pour tout widget
WP Anywhere Widgets a repris la même idée mais est allé plus loin. Il fournit non seulement des shortcodes pour les widgets existants, mais vous permet aussi de créer les vôtres directement dans l’administration, sans les lier à une barre latérale. Il prend en charge à la fois l’éditeur de widgets classique et les blocs Gutenberg.

L’installation est standard: Extensions → Ajouter → recherchez «WP Anywhere Widgets» → Installer → Activer. Après activation, une entrée Widget Shortcodes apparaît dans le menu Apparence: un tableau récapitulatif de tous les widgets créés et de leurs shortcodes. Un bouton «Copier» à côté de chacun.
L’extension fonctionne avec WordPress 3.3 et versions ultérieures, testée jusqu’à la version 6.8.5. En juin 2026, on compte plus de 700 installations actives et une note de 4,8 sur 5 sur WordPress.org. La dernière mise à jour (v4.0) a ajouté la prise en charge complète des blocs Gutenberg et une page d’administration séparée pour gérer les shortcodes.
🔗 WP Anywhere Widgets sur WordPress.org
Comment générer un shortcode de widget
Tout widget enregistré dans le système reçoit un identifiant unique: text-1, calendar-3 ou block-7. WP Anywhere Widgets affiche cet identifiant dans l’interface et fournit immédiatement un shortcode prêt à l’emploi:

Syntaxe de base:
1 [widget id="text-1"]
Insérez-le dans n’importe quel article, page ou bloc de texte. L’extension substituera le code HTML complet du widget: titre, corps, conteneur avec les classes CSS du thème. Aucune configuration supplémentaire n’est requise.
Insertion d’un shortcode dans un article et dans l’éditeur Gutenberg
Dans l’éditeur classique, le shortcode est inséré directement dans le texte, comme [gallery] ou [contact-form-7]:

Dans l’éditeur de blocs, utilisez le bloc Shortcode. Ajoutez le bloc, collez [widget id="text-1"], et WordPress affiche le widget dans l’éditeur visuel:

Si le widget contient du JavaScript (par exemple, une carte ou un formulaire), il ne s’exécutera pas dans l’éditeur. C’est une limitation de sécurité de Gutenberg. Sur le frontend, tout fonctionne normalement.
Paramètres du shortcode: titre, conteneur et classes CSS
Le shortcode accepte plusieurs paramètres optionnels qui modifient la sortie HTML sans une seule ligne de code:

title, remplacement du titre. Par défaut, le widget affiche le titre défini dans ses paramètres. Le paramètre title le remplace à la volée:
1 [widget id="text-1" title="New title"]
Pour masquer complètement le titre, passez title="0". Le widget s’affichera sans balise <h2> ou <h3> au-dessus du corps.
container_tag, balise HTML du conteneur. Par défaut, le widget est enveloppé dans une <div>. Remplacez-la par <section>, <aside> ou toute autre balise sémantique:
1 [widget id="text-1" container_tag="aside"]
container_class, classe CSS supplémentaire. Votre classe est ajoutée à la classe standard widget. Utile pour le style personnalisé d’une instance spécifique:
1 [widget id="text-1" container_class="my-custom-widget"]
container_id, attribut HTML id. Par défaut, WordPress génère l’ID automatiquement. Ce paramètre fixe la valeur pour les ancres et le ciblage JavaScript:
1 [widget id="text-1" container_id="subscribe-widget"]
title_tag** et title_class, contrôle du titre.** Changez la balise de titre de <h2> (par défaut) à <h3>, <h4>, et ajoutez une classe personnalisée:
1 [widget id="text-1" title_tag="h3" title_class="widget-title-large"]
Tous les paramètres peuvent être combinés dans un seul shortcode. L’ordre n’a pas d’importance, la syntaxe est standard: param="value".
Méthode PHP: la fonction the_widget() pour les développeurs
Lorsque vous n’avez pas besoin d’une extension, WordPress fournit la fonction native the_widget(). Elle affiche n’importe quel widget enregistré directement depuis PHP: dans un thème, un thème enfant ou un snippet Code Snippets.
Appel de base:
1 the_widget( 'WP_Widget_Text', array( 2 'title' => 'Subscription form', 3 'text' => '[mailpoet_form id="1"]', 4 'filter' => true, 5 ) );
Le premier argument est la classe PHP du widget. Le deuxième est un tableau de paramètres qui correspond à ce que le widget enregistre dans wp_options. Le troisième est un tableau d’arguments de conteneur:
1 the_widget( 'WP_Widget_Text', 2 array( 'title' => 'Subscribe', 'text' => '[shortcode]' ), 3 array( 4 'before_widget' => '<section class="widget %2$s">', 5 'after_widget' => '</section>', 6 'before_title' => '<h3 class="widget-title">', 7 'after_title' => '</h3>', 8 ) 9 );
Cette approche ne dépend pas d’extensions tierces et ne sera pas cassée par les mises à jour de WordPress. L’inconvénient: vous devez connaître la classe PHP de chaque widget. Classes standard du cœur:
WP_Widget_TextWP_Widget_CalendarWP_Widget_SearchWP_Widget_Categories
Trouvez la classe d’une extension dans son code source ou via var_dump( $wp_widget_factory->widgets ).
Le code se place dans le functions.php du thème actif (de préférence un thème enfant) ou via l’extension Code Snippets. Avant de modifier functions.php, sauvegardez le fichier: une erreur de syntaxe PHP fera tomber tout le site.
⁉️🤔 Foire aux questions
Le shortcode de widget fonctionne-t-il avec les extensions de cache?
Oui, le shortcode est traité par le serveur lors du rendu de la page, avant que le HTML n’entre dans le cache. WP Rocket, W3 Total Cache et LiteSpeed Cache enregistrent la page déjà assemblée avec le widget finalisé. Pour les données dynamiques (panier WooCommerce, taux de change), utilisez des blocs ESI pour exclure un fragment spécifique du cache. La fonction
the_widget()combinée àDOING_AJAXvous donne un contrôle total sur ce qui est mis en cache et ce qui ne l’est pas.
Le widget doit-il se trouver dans une barre latérale active?
Non, le widget n’a pas besoin d’être dans une barre latérale active. Il doit simplement être enregistré dans WordPress et ajouté à n’importe quelle barre latérale, y compris une barre inactive (Widgets inactifs). WP Anywhere Widgets crée les widgets dans son propre registre interne, qui n’est pas du tout lié aux zones de thème.
Combien de widgets peut-on afficher via shortcode sur une seule page?
Il n’y a pas de limite de quantité. Chaque appel
[widget]outhe_widget()crée une instance indépendante. La performance dépend uniquement de la complexité des widgets eux-mêmes: dix blocs de texte ou formulaires d’abonnement s’exécuteront instantanément, tandis que dix widgets avec des requêtes API externes ajouteront 200 à 300 ms chacun. Pour les widgets gourmands en API, mettez en cache les résultats via un transitoire à l’intérieur dethe_widget().
Que se passe-t-il si l’extension de widget est supprimée mais que son shortcode reste dans les articles?
Un shortcode sans gestionnaire actif s’affiche en texte brut: les visiteurs verront
[widget id="text-1"]directement sur la page. Avant de supprimer l’extension source, vérifiez tous les articles via la recherche d’administration: Outils → Better Search Replace, ou WP-CLI:wp search-replace '[widget id="text-1"]' '' --dry-run. Après un remplacement en masse, nettoyez les paragraphes vides dans la base de données séparément.
Peut-on utiliser un shortcode de widget dans un menu de navigation?
Les menus WordPress ne traitent pas les shortcodes par défaut. Pour insérer un widget dans la navigation, utilisez le filtre
wp_nav_menu_itemsdansfunctions.phpavec un appeldo_shortcode('[widget id="..."]'): cela ajoute le shortcode avant, après ou entre des éléments de menu spécifiques. Alternative: une classe Walker personnalisée qui analyse un espace réservé{widget}dans le nom de l’élément de menu et le remplace par un widget réel.
Que choisir: extension ou code personnalisé
Dans la plupart des cas, WP Anywhere Widgets gère entièrement la tâche. Installez-le, copiez le shortcode, collez-le là où vous en avez besoin. Les paramètres suffisent pour personnaliser le conteneur sans une seule ligne de CSS.
La méthode PHP via the_widget() se justifie dans deux situations: vous êtes un développeur visant le zéro extension tierce dans le projet, ou vous avez besoin d’une logique particulière (par exemple, des widgets différents pour les utilisateurs connectés par rapport aux visiteurs). Sinon, utilisez l’extension et ne compliquez pas les choses.
Si votre objectif est spécifiquement d’intégrer un formulaire d’abonnement au milieu d’un article, envisagez les extensions email avec prise en charge native des shortcodes: MailPoet, Newsletter, Brevo. Chacune fournit un shortcode [form] prêt à l’emploi avec contrôle du positionnement, tandis que WP Anywhere Widgets sert de couche universelle pour tout le reste.
Une démonstration visuelle de la chaîne WebTutorials: le cycle complet, de l’installation de l’extension à un shortcode fonctionnel sur une page, rapide et efficace.



