Skip to content

Wszystko o WordPressie, tworzeniu stron — i nie tylko

🔧 WordPress: jak wyświetlić widget za pomocą shortcode w dowolnym miejscu na stronie

🔧 WordPress: jak wyświetlić widget za pomocą shortcode w dowolnym miejscu na stronie

Potrzebuje Pan formularza subskrypcji nie w sidebarze, tylko w samym środku wpisu. Albo widżetu katalogu WooCommerce na stronie, gdzie sidebaru w ogóle nie ma. Wchodzi Pan do panelu administracyjnego, szuka bloku, a WordPress mówi: widżety żyją tylko w zarejestrowanych obszarach motywu. I tyle.

Ograniczenie architektoniczne: system widżetów jest przywiązany do sidebar-1, footer-widgets i innych stref zdefiniowanych w motywie. Treść wpisu to dla niego obce terytorium. Obejście istnieje, ale standardowego sposobu „wstaw widżet tutaj" w jądrze nie ma.

Shortcode dla widżetu rozwiązuje problem jedną linijką. Bez tworzenia osobnego obszaru, bez motywu potomnego i bez edycji szablonów. Poniżej, jak to działa w 2026 roku: gotowa wtyczka, wszystkie parametry i natywna alternatywa PHP dla deweloperów.

💡 Szybki przegląd:

  • Proszę zainstalować WP Anywhere Widgets, wtyczka generuje shortcode dla dowolnego zarejestrowanego widżetu.
  • Proszę wstawić shortcode do wpisu, strony, sidebaru lub szablonu PHP motywu.
  • Proszę skonfigurować tytuł, opakowanie HTML i klasy CSS za pomocą parametrów shortcode’u.
  • W projektach bez zewnętrznych wtyczek proszę użyć natywnej funkcji the_widget().

Do czego służy shortcode dla widżetu

WordPress nie pozwala wyświetlić widżetu wewnątrz treści wpisu standardowymi środkami. System widżetów działa tylko w obrębie zarejestrowanych obszarów motywu, a wszystko poza nimi dla niego nie istnieje.

W praktyce potrzeba pojawia się w trzech scenariuszach:

  • Formularz subskrypcji w długim poradniku. Sidebar pojechał w górę podczas przewijania, czytelnik nie widzi formularza. Shortcode utrzymuje CTA bezpośrednio w treści wpisu, przed oczami.

  • Widżet WooCommerce na niestandardowej stronie. Strona została zbudowana bez sidebaru, a filtry produktów lub wyszukiwarka ([woocommerce_product_search]) muszą być właśnie tutaj.

  • Dynamiczny blok „Podobne wpisy" w szablonie single.php. Motyw nie przewidział obszaru przed komentarzami. Shortcode wywołany z functions.php umieszcza widżet gdziekolwiek bez dotykania szablonów.

Wcześniej zadanie zamykała wtyczka Widget Shortcode, proste narzędzie generujące [widget id="text-1"] dla dowolnego zarejestrowanego widżetu. W styczniu 2023 została zamknięta z powodu nieusuwalnej podatności. Bezpośredni następca, WP Anywhere Widgets.

WP Anywhere Widgets: generator shortcode’ów dla dowolnego widżetu

WP Anywhere Widgets przejęła ten sam pomysł, ale poszła dalej. Nie tylko zwraca shortcode dla istniejących widżetów, ale także pozwala tworzyć własne bezpośrednio w panelu administracyjnym, bez wiązania z sidebarem. Obsługuje zarówno klasyczny edytor widżetów, jak i bloki Gutenberg.

Strona z shortcode'ami wszystkich widżetów w WP Anywhere Widgets

Instalacja jest standardowa: Wtyczki → Dodaj nową → wyszukiwanie „WP Anywhere Widgets" → Zainstaluj → Aktywuj. Po aktywacji w menu Wygląd pojawia się pozycja Widget Shortcodes, zbiorcza tabela wszystkich utworzonych widżetów i ich shortcode’ów. Przycisk „Copy" obok każdego.

Wtyczka działa z WordPress 3.3 i nowszymi, przetestowana do wersji 6.8.5. Na czerwiec 2026 roku, 700+ aktywnych instalacji i ocena 4,8 z 5 na WordPress.org. Ostatnia aktualizacja (v4.0) dodała pełną obsługę bloków Gutenberg oraz osobną stronę administracyjną do zarządzania shortcode’ami.

🔗 WP Anywhere Widgets na WordPress.org

Jak wygenerować shortcode widżetu

Każdy zarejestrowany w systemie widżet otrzymuje unikalny ID: text-1, calendar-3 lub block-7. WP Anywhere Widgets pokazuje ten ID w interfejsie i od razu podaje gotowy shortcode:

Generowanie shortcode'u widżetu w panelu administracyjnym WordPress

Podstawowa składnia:

1[widget id="text-1"]

Proszę wstawić go do dowolnego wpisu, strony lub bloku tekstowego. Wtyczka podstawi HTML widżetu w całości: tytuł, treść, opakowanie z klasami CSS motywu. Dodatkowa konfiguracja nie jest potrzebna.

Wstawianie shortcode’u do wpisu i w edytorze Gutenberg

W klasycznym edytorze shortcode wstawia się bezpośrednio w tekst, tak samo jak [gallery] lub [contact-form-7]:

Wstawianie shortcode'u widżetu w treści wpisu WordPress

W edytorze blokowym, przez blok Shortcode. Dodaje Pan blok, wstawia [widget id="text-1"], a WordPress renderuje widżet w edytorze wizualnym:

Shortcode widżetu w edytorze blokowym Gutenberg

Jeśli widżet zawiera JavaScript, na przykład mapę lub formularz, w edytorze nie zostanie wykonany. To ograniczenie bezpieczeństwa Gutenberga. Na frontendzie wszystko działa standardowo.

Parametry shortcode’u: tytuł, opakowanie i klasy CSS

Shortcode przyjmuje kilka opcjonalnych parametrów, które zmieniają wyjście HTML bez ani jednej linii kodu:

Interfejs konfiguracji parametrów shortcode'u widżetu

title, nadpisanie tytułu. Domyślnie widżet pokazuje tytuł ustawiony w jego konfiguracji. Parametr title zastępuje go w locie:

1[widget id="text-1" title="Новый заголовок"]

Aby całkowicie ukryć tytuł, proszę przekazać title="0". Widżet wyrenderuje się bez <h2> lub <h3> nad treścią.

container_tag, znacznik HTML opakowania. Domyślnie widżet jest opakowany w <div>. Proszę zamienić na <section>, <aside> lub dowolny inny znacznik semantyczny:

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

container_class, dodatkowa klasa CSS. Do standardowej klasy widget dodawana jest Pana klasa. Przyda się do niestandardowej stylizacji konkretnej instancji:

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

container_id, atrybut HTML id. Domyślnie WordPress generuje ID automatycznie. Parametr ustala wartość, dla linków kotwiczących i targetowania JavaScript:

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

title_tag** i title_class, sterowanie tytułem.** Zmieniają znacznik tytułu z <h2> (domyślnie) na <h3>, <h4> i dodają niestandardową klasę:

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

Wszystkie parametry łączy się w jednym shortcodzie. Kolejność nie ma znaczenia, składnia jest standardowa: param="value".

Sposób PHP: funkcja the_widget() dla deweloperów

Gdy wtyczka nie jest potrzebna, WordPress udostępnia natywną funkcję the_widget(). Wyświetla ona dowolny zarejestrowany widżet bezpośrednio z PHP, w motywie, motywie potomnym lub snippecie Code Snippets.

Podstawowe wywołanie:

1the_widget( 'WP_Widget_Text', array(
2 'title' => 'Форма подписки',
3 'text' => '[mailpoet_form id="1"]',
4 'filter' => true,
5) );

Pierwszy argument, klasa PHP widżetu. Drugi, tablica ustawień, zgodna z tym, co widżet przechowuje w wp_options. Trzeci, tablica argumentów opakowania:

1the_widget( 'WP_Widget_Text',
2 array( 'title' => 'Подписка', '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);

Podejście nie zależy od zewnętrznych wtyczek i nie psuje się podczas aktualizacji WordPress. Minus: trzeba znać klasę PHP każdego widżetu. Standardowe klasy jądra:

  • WP_Widget_Text
  • WP_Widget_Calendar
  • WP_Widget_Search
  • WP_Widget_Categories

Klasy wtyczki proszę szukać w źródłach lub przez var_dump( $wp_widget_factory->widgets ).

Kod wstawia się do functions.php aktywnego motywu, najlepiej potomnego, lub przez wtyczkę Code Snippets. Przed edycją functions.php proszę zrobić backup pliku: błąd składniowy w PHP położy całą witrynę.

⁉️🤔 Częste pytania

Czy shortcode widżetu działa z wtyczkami buforującymi?

Tak, shortcode jest przetwarzany przez serwer na etapie renderowania strony, zanim HTML trafi do cache. WP Rocket, W3 Total Cache i LiteSpeed Cache zapisują już złożoną stronę z gotowym widżetem. Dla danych dynamicznych, takich jak koszyk WooCommerce czy kursy walut, proszę używać bloków ESI, aby wykluczyć konkretny fragment z cache. Funkcja the_widget() w połączeniu z DOING_AJAX daje pełną kontrolę nad tym, co jest buforowane, a co nie.

Czy widżet musi być w aktywnym sidebarze?

Nie, widżet nie musi znajdować się w aktywnym sidebarze. Wystarczy, że jest zarejestrowany w WordPress i dodany do dowolnego sidebaru, w tym nieaktywnego (Inactive Widgets). WP Anywhere Widgets tworzy widżety we własnym wewnętrznym rejestrze, który w ogóle nie jest przywiązany do obszarów motywu.

Ile widżetów można wyświetlić shortcodem na jednej stronie?

Nie ma ograniczeń co do liczby. Każde wywołanie [widget] lub the_widget() tworzy niezależną instancję. Wydajność zależy wyłącznie od złożoności samych widżetów: dziesięć bloków tekstowych lub formularzy subskrypcji zadziała natychmiast, a dziesięć widżetów z zewnętrznymi zapytaniami API doda po 200-300 ms na każdy. Dla widżetów obciążonych API proszę buforować wyniki przez transient wewnątrz the_widget().

Co zrobić, jeśli wtyczkę widżetu usunięto, a jej shortcode pozostał we wpisach?

Shortcode bez aktywnego handlera wyświetla się jako zwykły tekst, odwiedzający zobaczą [widget id="text-1"] bezpośrednio na stronie. Przed usunięciem wtyczki źródłowej proszę sprawdzić wszystkie wpisy przez wyszukiwanie w panelu administracyjnym: Narzędzia → Better Search Replace lub WP-CLI: wp search-replace '[widget id="text-1"]' '' --dry-run. Po masowej zamianie proszę wyczyścić puste akapity przez bazę danych osobno.

Czy można użyć shortcode’u widżetu w menu nawigacyjnym?

Menu WordPress nie przetwarza shortcode’ów w standardowy sposób. Aby wstawić widżet do nawigacji, proszę użyć filtra wp_nav_menu_items w functions.php z wywołaniem do_shortcode('[widget id="..."]'), doda to shortcode przed, po lub pomiędzy konkretnymi pozycjami menu. Alternatywa: niestandardowa klasa Walker, która parsuje placeholder {widget} w nazwie pozycji i zastępuje go żywym widżetem.

Co wybrać: wtyczkę czy własny kod

W większości przypadków WP Anywhere Widgets zamyka zadanie całkowicie. Instaluje Pan, kopiuje shortcode, wstawia tam, gdzie trzeba. Parametrów wystarcza do dostosowania opakowania bez ani jednej linii CSS.

Sposób PHP przez the_widget() jest uzasadniony w dwóch sytuacjach: jest Pan deweloperem i trzyma kurs na zero zewnętrznych wtyczek w projekcie albo potrzebuje Pan szczególnej logiki, na przykład różnych widżetów dla zalogowanych i gości. W pozostałych przypadkach proszę wziąć wtyczkę i nie komplikować.

Jeśli Pana celem jest osadzenie właśnie formularza subskrypcji w środku wpisu, proszę przyjrzeć się wtyczkom mailingowym z natywną obsługą shortcode’ów: MailPoet, Newsletter, Brevo. Każda z nich daje gotowy shortcode [form] z kontrolą pozycjonowania, a WP Anywhere Widgets pełni rolę uniwersalnej warstwy pośredniej dla całej reszty.

Poglądowa demonstracja od kanału WebTutorials: pełny cykl od instalacji wtyczki do działającego shortcode’u na stronie, szybko i bez lania wody.