Skip to content

Tutto per WordPress, lo sviluppo web — e non solo

🔧 WordPress: come visualizzare un widget con uno shortcode ovunque sul tuo sito

🔧 WordPress: come visualizzare un widget con uno shortcode ovunque sul tuo sito

Ti serve un modulo di iscrizione non nella sidebar ma proprio al centro di un articolo. Oppure un widget catalogo WooCommerce su una pagina che non ha alcuna sidebar. Vai nel pannello di amministrazione, cerchi un blocco e WordPress ti dice: i widget vivono solo nelle aree registrate del tema. Punto.

La limitazione è architetturale: il sistema dei widget è legato a sidebar-1, footer-widgets e altre zone definite nel tema. Il contenuto dei post è territorio straniero per lui. Puoi aggirare il problema, ma non esiste un'opzione standard "inserisci widget qui" nel core.

Uno shortcode per i widget risolve il problema con una sola riga. Nessuna necessità di creare un'area separata, niente child theme, niente modifiche ai template. Ecco come funziona nel 2026: un plugin già pronto, tutti i parametri e un'alternativa nativa in PHP per sviluppatori.

💡 Panoramica rapida:

  • Installa WP Anywhere Widgets, il plugin genera uno shortcode per qualsiasi widget registrato.
  • Inserisci lo shortcode in un articolo, una pagina, una sidebar o un template PHP del tema.
  • Configura titolo, contenitore HTML e classi CSS tramite i parametri dello shortcode.
  • Per progetti senza plugin di terze parti, usa la funzione nativa the_widget().

Perché ti serve uno shortcode per i widget

WordPress non permette di mostrare un widget dentro il contenuto di un post usando gli strumenti standard. Il sistema dei widget funziona solo all'interno delle aree registrate del tema, e tutto ciò che sta fuori da quei confini per lui non esiste.

Nella pratica, l'esigenza nasce in tre scenari:

  • Modulo di iscrizione in una guida lunga. La sidebar è sparita scrollando in alto, il lettore non vede il modulo. Uno shortcode mantiene la call to action direttamente nel corpo del post, davanti ai suoi occhi.

  • Widget WooCommerce su una pagina personalizzata. La pagina è costruita senza sidebar, ma i filtri prodotto o la ricerca ([woocommerce_product_search]) devono stare proprio lì.

  • Blocco dinamico "Articoli correlati" nel template single.php. Il tema non ha previsto un'area prima dei commenti. Uno shortcode richiamato da functions.php posiziona il widget ovunque senza toccare i template.

In passato, il plugin Widget Shortcode gestiva questo compito: uno strumento semplice che generava [widget id="text-1"] per qualsiasi widget registrato. A gennaio 2023 è stato chiuso per una vulnerabilità non risolta. Il successore diretto è WP Anywhere Widgets.

WP Anywhere Widgets: generatore di shortcode per qualsiasi widget

WP Anywhere Widgets ha ripreso la stessa idea ma è andato oltre. Non solo fornisce shortcode per widget esistenti, ma permette anche di crearne di propri direttamente nel pannello di amministrazione, senza vincolarli a una sidebar. Supporta sia l'editor classico dei widget sia i blocchi di Gutenberg.

Pagina shortcode per tutti i widget di WP Anywhere Widgets

L'installazione è standard: Plugin → Aggiungi nuovo → cerca "WP Anywhere Widgets" → Installa → Attiva. Dopo l'attivazione, nel menu Aspetto compare la voce Widget Shortcodes: una tabella riepilogativa di tutti i widget creati e i relativi shortcode. Un pulsante "Copia" accanto a ciascuno.

Il plugin funziona con WordPress 3.3 e superiori, testato fino alla versione 6.8.5. A giugno 2026, conta oltre 700 installazioni attive e una valutazione di 4,8 su 5 su WordPress.org. L'ultimo aggiornamento (v4.0) ha aggiunto il supporto completo ai blocchi di Gutenberg e una pagina di amministrazione separata per gestire gli shortcode.

🔗 WP Anywhere Widgets su WordPress.org

Come generare uno shortcode per un widget

Ogni widget registrato nel sistema riceve un ID univoco: text-1, calendar-3 o block-7. WP Anywhere Widgets mostra questo ID nell'interfaccia e fornisce subito lo shortcode pronto:

Generazione shortcode widget nell'amministrazione WordPress

Sintassi di base:

1[widget id="text-1"]

Inseriscilo in qualsiasi articolo, pagina o blocco di testo. Il plugin sostituirà l'HTML completo del widget: titolo, corpo, contenitore con le classi CSS del tema. Nessuna configurazione aggiuntiva richiesta.

Inserire uno shortcode in un articolo e nell'editor Gutenberg

Nell'editor classico, lo shortcode si inserisce direttamente nel testo, esattamente come [gallery] o [contact-form-7]:

Inserimento shortcode widget nel corpo di un articolo WordPress

Nell'editor a blocchi, usa il blocco Shortcode. Aggiungi il blocco, incolla [widget id="text-1"] e WordPress renderizza il widget nell'editor visuale:

Shortcode widget nell'editor a blocchi Gutenberg

Se il widget contiene JavaScript (per esempio, una mappa o un modulo), non verrà eseguito nell'editor. È una limitazione di sicurezza di Gutenberg. Nel frontend, tutto funziona normalmente.

Parametri dello shortcode: titolo, contenitore e classi CSS

Lo shortcode accetta diversi parametri opzionali che modificano l'output HTML senza scrivere una sola riga di codice:

Interfaccia di configurazione parametri shortcode widget

title, sostituzione del titolo. Di default, il widget mostra il titolo impostato nelle sue impostazioni. Il parametro title lo sostituisce al volo:

1[widget id="text-1" title="New title"]

Per nascondere completamente il titolo, passa title="0". Il widget verrà renderizzato senza un <h2> o <h3> sopra il corpo.

container_tag, tag HTML del contenitore. Di default, il widget è avvolto in un <div>. Sostituiscilo con <section>, <aside> o qualsiasi altro tag semantico:

1[widget id="text-1" container_tag="aside"]

container_class, classe CSS aggiuntiva. La tua classe viene aggiunta alla classe standard widget. Utile per stilizzare in modo personalizzato un'istanza specifica:

1[widget id="text-1" container_class="my-custom-widget"]

container_id, attributo HTML id. Di default, WordPress genera l'ID automaticamente. Questo parametro fissa il valore per link àncora e targeting JavaScript:

1[widget id="text-1" container_id="subscribe-widget"]

title_tag** e title_class, controllo del titolo.** Cambia il tag del titolo da <h2> (default) a <h3>, <h4> e aggiungi una classe personalizzata:

1[widget id="text-1" title_tag="h3" title_class="widget-title-large"]

Tutti i parametri sono combinabili in un unico shortcode. L'ordine non conta, la sintassi è standard: param="value".

Metodo PHP: la funzione the_widget() per sviluppatori

Quando non hai bisogno di un plugin, WordPress mette a disposizione la funzione nativa the_widget(). Restituisce qualsiasi widget registrato direttamente da PHP: in un tema, child theme o snippet di Code Snippets.

Chiamata di base:

1the_widget( 'WP_Widget_Text', array(
2 'title' => 'Subscription form',
3 'text' => '[mailpoet_form id="1"]',
4 'filter' => true,
5) );

Il primo argomento è la classe PHP del widget. Il secondo è un array di impostazioni che corrisponde a ciò che il widget salva in wp_options. Il terzo è un array di argomenti per il contenitore:

1the_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);

Questo approccio non dipende da plugin di terze parti e non si romperà con gli aggiornamenti di WordPress. Lo svantaggio: devi conoscere la classe PHP di ciascun widget. Classi standard del core:

  • WP_Widget_Text
  • WP_Widget_Calendar
  • WP_Widget_Search
  • WP_Widget_Categories

Trova la classe di un plugin nel suo codice sorgente o tramite var_dump( $wp_widget_factory->widgets ).

Il codice va inserito nel functions.php del tema attivo (preferibilmente un child theme) o tramite il plugin Code Snippets. Prima di modificare functions.php, fai un backup del file: un errore di sintassi PHP manderà giù l'intero sito.

⁉️🤔 Domande frequenti

Lo shortcode per widget funziona con i plugin di caching?

Sì, lo shortcode viene elaborato dal server durante il rendering della pagina, prima che l'HTML entri nella cache. WP Rocket, W3 Total Cache e LiteSpeed Cache salvano la pagina già assemblata con il widget finito. Per dati dinamici (carrello WooCommerce, tassi di cambio), usa blocchi ESI per escludere un frammento specifico dalla cache. La funzione the_widget() combinata con DOING_AJAX ti dà il pieno controllo su cosa viene cachato e cosa no.

Il widget deve trovarsi in una sidebar attiva?

No, il widget non deve trovarsi in una sidebar attiva. Deve solo essere registrato in WordPress e aggiunto a una sidebar qualsiasi, inclusa una inattiva (Widget inattivi). WP Anywhere Widgets crea i widget in un proprio registro interno, che non è affatto legato alle aree del tema.

Quanti widget si possono mostrare tramite shortcode in una singola pagina?

Non ci sono limiti di quantità. Ogni chiamata [widget] o the_widget() crea un'istanza indipendente. Le prestazioni dipendono solo dalla complessità dei widget stessi: dieci blocchi di testo o moduli di iscrizione verranno eseguiti all'istante, mentre dieci widget con richieste ad API esterne aggiungeranno 200-300 ms ciascuno. Per widget che fanno uso intensivo di API, memorizza i risultati nella cache tramite transient dentro the_widget().

Cosa succede se il plugin del widget viene rimosso ma il suo shortcode resta negli articoli?

Uno shortcode senza un gestore attivo viene visualizzato come testo semplice: i visitatori vedranno [widget id="text-1"] direttamente sulla pagina. Prima di rimuovere il plugin di origine, controlla tutti i post tramite la ricerca di amministrazione: Strumenti → Better Search Replace, oppure WP-CLI: wp search-replace '[widget id="text-1"]' '' --dry-run. Dopo la sostituzione di massa, pulisci i paragrafi vuoti nel database separatamente.

Si può usare uno shortcode per widget in un menu di navigazione?

I menu di WordPress non elaborano gli shortcode di default. Per inserire un widget nella navigazione, usa il filtro wp_nav_menu_items nel functions.php con una chiamata do_shortcode('[widget id="..."]'): questo aggiunge lo shortcode prima, dopo o tra specifiche voci di menu. Alternativa: una classe Walker personalizzata che analizza un segnaposto {widget} nel nome della voce di menu e lo sostituisce con un widget attivo.

Cosa scegliere: plugin o codice personalizzato

Nella maggior parte dei casi, WP Anywhere Widgets gestisce il compito in modo completo. Installalo, copia lo shortcode, incollalo dove serve. I parametri sono sufficienti per personalizzare il contenitore senza una sola riga di CSS.

Il metodo PHP tramite the_widget() si giustifica in due situazioni: sei uno sviluppatore che punta a zero plugin di terze parti nel progetto, oppure hai bisogno di una logica particolare (per esempio, widget diversi per utenti loggati rispetto agli ospiti). Altrimenti, usa il plugin e non complicare le cose.

Se il tuo obiettivo è specificamente incorporare un modulo di iscrizione a metà di un articolo, considera i plugin email con supporto nativo agli shortcode: MailPoet, Newsletter, Brevo. Ognuno fornisce uno shortcode [form] già pronto con controllo del posizionamento, mentre WP Anywhere Widgets funge da livello universale per tutto il resto.

Una dimostrazione visiva dal canale WebTutorials: il ciclo completo dall'installazione del plugin a uno shortcode funzionante su una pagina, rapido e diretto.