Jak używać shortcodes w WordPress - icomMedia

Jak używać shortcodes w WordPress

Jak używać shortcodes w WordPress

Krótki wpis może potrzebować stopki z aktualnym rokiem, przycisku prowadzącego do koszyka albo fragmentu cennika generowanego automatycznie. Zamiast każdorazowo pisać HTML i pamiętać o skomplikowanej logice, można skorzystać z shortcodes – prostych znaczników w nawiasach kwadratowych, które po opublikowaniu zamieniają się w gotowe elementy. Mechanizm ten jest wbudowany w WordPress i pozwala łączyć treść z dynamiką bez nadmiaru kodu w edytorze. Poniżej znajdziesz przystępne wprowadzenie, wskazówki dotyczące poprawnej składni, praktyczne przykłady oraz dobre praktyki związane z tworzeniem własnych shortcodów, tak aby Twoje treści były elastyczne, spójne i łatwe w utrzymaniu.

Co to są shortcodes i kiedy ich używać

Shortcode to krótki skrót w nawiasach kwadratowych, np. [rok] lub [galeria ids=”1,2,3″], który podczas przetwarzania treści zostaje rozpoznany i zamieniony na wynik – od zwykłego tekstu, przez osadzony element multimedialny, po rozbudowany komponent HTML. Pod spodem działa funkcja PHP przypisana do danej nazwy, która generuje finalny fragment. W rezultacie autor treści może wstawić dynamiczne elementy bez znajomości programowania.

Najczęściej shortcodes stosuje się, gdy:

  • Ten sam element ma się pojawić w wielu miejscach, a jego logika wygląda identycznie (np. przycisk CTA, ramka informacyjna, stopka z aktualnym rokiem).
  • Treść wymaga parametrów konfiguracyjnych (np. lista produktów z wybranej kategorii), ale nie chcesz ręcznie powielać skomplikowanego HTML.
  • Chcesz odseparować logikę (PHP) od treści (edytowanej przez redaktorów), aby łatwiej utrzymać spójność i poprawność.
  • Potrzebujesz kontrolować sposób wyświetlania elementów z uwzględnieniem zmian motywu, rebrandingu lub sezonowych akcji.

Jak zawsze, istnieją też granice. Shortcodes nie powinny dublować funkcjonalności panelu ustawień, ani zamieniać całej strony w kaskadę dynamicznych wywołań. Jeżeli komponent ma bogate UI i wieloetapową konfigurację, warto rozważyć zbudowanie dedykowanego bloku w edytorze blokowym. Z drugiej strony – gdy liczy się szybkość wdrożenia, prostota i możliwość wklejenia jednego znacznika w dowolnym miejscu, shortcodes sprawdzają się doskonale.

Ważne: shortcodes są interpretowane podczas renderowanie treści. Oznacza to, że jeśli wstawisz je w polach, które nie przechodzą przez filtry treści (np. niektóre metadane lub tytuły), mogą się nie wykonać. Możesz to zmienić, dodając odpowiednie filtry lub wywołując funkcje przetwarzające skróty w konkretnych miejscach motywu.

Składnia, atrybuty i treść wewnętrzna

Istnieją dwa podstawowe typy shortcodów:

  • Samozamykające: [rok], [mapa width=”600″ height=”400″].
  • Otwierające i zamykające: [ramka kolor=”zielony”]Tu treść wewnętrzna[/ramka].

Parametry przekazuje się jako pary klucz=”wartość”. Cudzysłowy są zalecane, zwłaszcza przy wartościach zawierających spacje lub przecinki. Większość implementacji korzysta z domyślnych wartości i łączy je z tym, co podał użytkownik. W callbacku funkcji możesz odczytać atrybuty, zweryfikować je i bezpiecznie wyrenderować wynik.

Wskazówki praktyczne:

  • Nazywaj atrybuty krótko i jednoznacznie (np. id, limit, kolor).
  • Stosuj sensowne wartości domyślne, aby shortcode działał także bez parametrów.
  • W przypadku shortcodów z treścią wewnętrzną wykrywaj i obrabiaj zarówno [tag]treść[/tag], jak i [tag /], jeśli chcesz wspierać obie formy.
  • Pamiętaj o kolejności przetwarzania: jeśli wewnątrz treści shortcodu znajduje się inny shortcode, możesz potrzebować dodatkowego przetworzenia, aby zagnieżdżenia zadziałały.

Przykład składni (w treści wpisu): [przycisk url=”/kontakt” styl=”primary”]Skontaktuj się[/przycisk]

Oczekiwany wynik to link z odpowiednimi klasami CSS i atrybutami dostępności. Ważne, aby funkcja odpowiedzialna za generowanie HTML robiła to bezpiecznie i przewidywalnie, o czym więcej w dalszej części.

Wstawianie shortcodes w edytorach: Klasyczny, Gutenberg, widżety i menu

Niezależnie od tego, czy korzystasz z Klasycznego Edytora, czy z edytora blokowego, shortcodes działały i wciąż działają. Różni się jedynie sposób wstawiania i podglądu.

W Klasycznym Edytorze wpisujesz shortcode bezpośrednio w treści, np. [galeria ids=”10,11,12″]. Po zapisaniu i podglądzie zostanie on zamieniony na galerię. W trybie „Tekst” widać surowy znacznik, w trybie „Wizualnym” – po opublikowaniu – docelowe HTML.

W edytorze blokowym możesz skorzystać z dedykowanego bloku Shortcode i wpisać w nim znacznik. Pamiętaj, że nie wszystkie shortcodes mają „żywy” podgląd w czasie rzeczywistym – niektóre wyświetlą finalny efekt dopiero w trybie podglądu wpisu. Jeśli często używasz jednego shortcodu, rozważ zapisanie go jako wzorca lub części wielokrotnego użytku. W niektórych przypadkach naturalnym krokiem będzie też stworzenie natywnego bloku odpowiadającego funkcji shortcodu, aby redaktorzy mieli wygodniejsze UI. Pierwszy raz używając bloku Shortcode w edytorze blokowym, dobrze jest opisać w notatce, co wpis dany znacznik robi, tak aby inni autorzy nie czuli się zaskoczeni.

Shortcodes działają także w widżetach tekstowych. Od wersji z blokami widżetów można dodać blok „Skrót” albo wstawić znacznik w bloku „Akapit”. W menu nawigacyjnym shortcodes nie są przetwarzane domyślnie; aby uzyskać taki efekt, trzeba użyć fragmentu kodu lub wtyczki aktywującej przetwarzanie skrótów w etykietach menu. Zanim to zrobisz, oceń wpływ na wydajność i utrzymanie nawigacji.

Jeżeli zależy Ci na spójności stylów, przetestuj shortcode w różnych obszarach motywu: w treści wpisu, w widżecie, w szablonie archiwum i w stopce. Czasem CSS motywu nakłada specyficzne reguły w określonych kontekstach, co może wymagać dopisania kilku klas lub stylów.

Dla klarowności: w tym akapicie słowo edytor oznacza zarówno klasyczny interfejs TinyMCE, jak i nowy interfejs blokowy. Niezależnie od wyboru, sam mechanizm przetwarzania jest ten sam – skrót zostaje „rozszyfrowany” przez funkcję PHP i zwraca tekst/HTML do wyrenderowania w treści.

Jeśli tworzysz zawartość blokową, pamiętaj, że czasem wygodniej będzie zbudować natywny blok, szczególnie gdy element wymaga interaktywnego formularza konfiguracji, list wyboru, wsparcia dla podglądu i tłumaczeń UI.

Domyślne shortcodes WordPress i przykłady zastosowań

System oferuje kilka wbudowanych shortcodów, które obsługują multimedia i podpisy. Do najczęściej używanych należą:

  • – wyświetla galerię obrazów. Atrybuty: ids (lista ID), columns, size, link. Przykład: .
  • – dodaje podpis do obrazu lub innego elementu. Przykład: [caption id="attachment_10" align="aligncenter" width="600"]Opis zdjęcia.
  • i – osadzają odtwarzacze multimediów. Przykłady: oraz .
  • – tworzy listę odtwarzania dla audio lub wideo.
  • – po podaniu adresu URL pomaga w osadzaniu treści zewnętrznych, choć dziś częściej wystarcza wklejenie samego linku dzięki oEmbed.

W praktyce najwięcej shortcodów dostarczają rozszerzenia. Przykładowo sklepy internetowe oferują znaczniki list produktów, koszyka czy konta użytkownika, a wtyczki formularzy – możliwość wstawienia formularza kontaktowego w dowolnym miejscu treści. Dzięki temu nie musisz ręcznie przepisywać całej struktury HTML i logiki walidacji. Z perspektywy redaktora: wpisujesz krótki znacznik z parametrami i gotowe.

Zanim zdecydujesz się na kolejne rozszerzenie, przejrzyj dokumentację i przykłady. Dobra praktyka to prowadzenie własnego katalogu używanych skrótów w zespole redakcyjnym – krótkiej listy z opisem i przykładem, aby uniknąć niespójności. W wielu przypadkach dodatkowe wtyczki nie są konieczne, jeśli potrafisz stworzyć kilka prostych, własnych shortcodów pokrywających 80% potrzeb.

Wskazówka: jeżeli shortcode działa w sposób kosztowny (np. generuje dużą galerię lub wykonuje kilka zapytań do API), rozważ cache’owanie wyniku na poziomie funkcji lub użycie systemu pamięci podręcznej. Szczegóły w rozdziale o wydajności i testowaniu.

Tworzenie własnych shortcodes w motywie lub wtyczce

Własne shortcodes dodasz przez rejestrację funkcji (callbacku) i powiązanie jej z nazwą skrótu. Minimalny przykład – bieżący rok:

functions.php motywu lub plik wtyczki:
add_shortcode(’rok’, function() {
return date(’Y’);
});

Teraz [rok] w treści wpisu zwróci aktualny rok. To najprostsza forma, ale w praktyce przydadzą się atrybuty i walidacja. Przykład bardziej rozbudowany – przycisk z linkiem i stylem:

add_shortcode(’przycisk’, function($atts, $content = ”) {
$atts = shortcode_atts([
'url’ => '#’,
'styl’ => 'primary’,
], $atts, 'przycisk’);

$url = esc_url($atts[’url’]);
$styl = sanitize_html_class($atts[’styl’]);

$etykieta = $content !== ” ? wp_kses_post($content) : 'Dowiedz się więcej’;

return ’’ . $etykieta . ’’;
});

Powyższy przykład:

  • Określa domyślne wartości atrybutów i łączy je z tym, co podał użytkownik.
  • Sanityzuje dane wejściowe (adres URL i klasę CSS), a treść wewnętrzną przepuszcza przez bezpieczną funkcję dopuszczającą prosty HTML.
  • Zwraca gotowy fragment HTML zamiast go wypisywać. To bardzo ważne – shortcode powinien zwracać wynik, a nie używać echo, aby zachować kontrolę nad miejscem wyświetlenia.

Przykład z danymi dynamicznymi – pobranie tytułu wpisu o danym ID:
add_shortcode(’tytul’, function($atts) {
$atts = shortcode_atts([’id’ => 0], $atts, 'tytul’);
$id = absint($atts[’id’]);
if (!$id) {
return ”;
}
$post = get_post($id);
if (!$post) {
return ”;
}
return esc_html(get_the_title($post));
});

Jeżeli budujesz rozbudowane rozwiązania, przenieś rejestrację do własnej wtyczki, aby nie tracić shortcodów przy zmianie motywu. Gdy musisz wykonać shortcode w pliku motywu, sięgnij po do_shortcode():

echo do_shortcode('[rok]’);

To przydatne wtedy, gdy chcesz wstrzyknąć skrót w konkretny szablon (np. w nagłówku lub stopce), ale pamiętaj, aby nie nadużywać takiego podejścia – łatwo w ten sposób stworzyć trudną do utrzymania sieć zależności.

Dobra praktyka: jeżeli Twój shortcode ma wiele wariantów i logikę warunkową, wydziel jego kod do osobnej klasy/funkcji pomocniczych, a callback niech tylko mapuje atrybuty i wywołuje właściwą warstwę logiki. Ułatwi to testowanie i rozwój.

Bezpieczeństwo, wydajność i testowanie

Słowo-klucz to bezpieczeństwo. Shortcode otrzymuje dane od redaktora (atrybuty i treść), które muszą zostać sprawdzone i zsanityzowane:

  • Używaj esc_url, esc_html, esc_attr, wp_kses_post, sanitize_text_field, sanitize_html_class i podobnych funkcji do oczyszczania danych oraz ich bezpiecznego wyświetlania.
  • Nie wykonuj surowych zapytań SQL. Jeśli musisz, użyj $wpdb->prepare.
  • Nie dopuszczaj do wstrzyknięcia skryptów lub niekontrolowanego HTML. Jeśli shortcode pozwala na HTML w treści, kontroluj dozwolone tagi przez wp_kses.
  • Jeśli shortcode wykonuje akcje zmieniające stan (rzadkie, ale możliwe), uwzględnij mechanizmy autoryzacji, nonce i sprawdzanie ról użytkownika. Z reguły jednak shortcodes powinny być idempotentne i wyświetlać dane, a nie je modyfikować.

Drugim filarem jest wydajność. Każdy shortcode wykonywany jest podczas generowania strony. Jeżeli Twój skrót odpytuje zewnętrzne API lub przetwarza duży zbiór danych:

  • Buforuj wynik przez transients lub obiektową pamięć podręczną, skracając czas serwowania kolejnych odsłon.
  • Minimalizuj liczbę zapytań do bazy, korzystaj z cache meta i przemyśl indeksy w zapytaniach.
  • Unikaj kosztownych pętli w PHP, jeśli możesz skomponować wynik poprzez istniejące funkcje szablonowe.
  • Rozdziel pobieranie danych od ich prezentacji – łatwiej wtedy wymienić jedną z warstw lub zastosować cache selektywny.

Testowanie jest równie ważne, jak kodowanie. Zadbaj o:

  • Testy jednostkowe dla funkcji budujących wynik (np. generujących HTML dla danych wejściowych).
  • Testy integracyjne: jak shortcode zachowuje się w różnych kontekstach motywu, z rozmaitymi atrybutami i treścią wewnętrzną.
  • Testy dostępności – elementy generowane muszą mieć właściwe role ARIA, opisy alternatywne, kontrast i działanie z klawiaturą.
  • Testy wizualne – porównania zrzutów ekranów, szczególnie przy zmianach stylów motywu.

Jeśli pracujesz w witrynie o dużym ruchu, monitoruj wpływ shortcodów na TTFB i ogólny czas generowania strony. Niekiedy lepiej przenieść obciążające operacje do CRON-a i serwować efekt z cache niż liczyć wszystko „na żywo” przy każdym wejściu użytkownika.

Debugowanie, najlepsze praktyki i przyszłość względem bloków

Podczas budowy rozwiązań stosuj jasne nazewnictwo. Nazwa shortcodu nie powinna kolidować z istniejącymi skrótami z wtyczek lub rdzenia. Sprawdzenie kolizji umożliwia funkcja shortcode_exists(’nazwa’). W logowaniu błędów pomagają WP_DEBUG i dedykowane narzędzia do zbierania logów. Gdy wynik jest nieprawidłowy, najpierw zreprodukować problem w minimalnych warunkach – czysty motyw, wyłączone rozszerzenia – aby wykluczyć konflikt.

Dobre praktyki na co dzień:

  • Shortcode zwraca wynik, nie wypisuje go bezpośrednio (echo może powodować problemy z kolejnością generowania treści).
  • Domyślne wartości atrybutów dokumentuj i trzymaj w jednym miejscu – ułatwia to modyfikacje i spójność.
  • Nie mieszaj pobierania danych z ich renderowaniem – buduj małe, testowalne funkcje.
  • Zadbaj o tłumaczalność (i18n): teksty wewnątrz wyniku opakuj w funkcje tłumaczeń.
  • Dodaj ochronę przed rekurencją (np. jeśli shortcode przypadkowo wstawi sam siebie w treści).
  • Dbaj o degradację – jeśli brakuje danych, pokaż bezpieczny komunikat lub pusty wynik, zamiast generować błąd.

Krótko o ewolucji ekosystemu: edytor blokowy promuje komponenty z deklaratywną konfiguracją i bogatym UI. W wielu projektach shortcodes i bloki będą współistnieć – skróty nadal świetnie sprawdzają się w małych, powtarzalnych elementach i jako warstwa kompatybilności wstecznej. Gdy jednak pojawia się potrzeba interaktywnego panelu ustawień, podglądu na żywo i współpracy z globalnymi stylami, lepszym kierunkiem będzie budowa własnego bloku dynamicznego z render_callback lub komponentu, który łączy JS/React z serwerowym generowaniem HTML.

Jeśli chcesz płynnie migrować istniejące shortcodes do środowiska blokowego:

  • Stwórz dynamiczny blok, który przyjmuje te same parametry co dotychczasowy skrót (mapowanie atrybutów).
  • Dodaj transformację, pozwalającą zamieniać w treści stary shortcode na nowy blok bez utraty ustawień.
  • Stopniowo oznaczaj shortcode jako przestarzały w dokumentacji, pozostawiając go dla treści historycznych.

Pamiętaj też o spójności doświadczenia dla redaktorów. Jeśli w projekcie równolegle istnieją skróty i bloki dla tych samych funkcji, jasno opisz, czego należy używać w nowych treściach. Dobra dokumentacja wewnętrzna zmniejsza ryzyko pomyłek i skraca czas wdrożenia nowych osób.

Na koniec szybkie podsumowanie kluczowych zasad:

  • Projektuj API shortcodu tak, by jego użycie było oczywiste, a domyślne wartości sensowne.
  • Waliduj i sanityzuj dane, dbaj o bezpieczeństwo i dostępność.
  • Testuj w różnych kontekstach i monitoruj wpływ na wydajność witryny.
  • Rozważ, kiedy prosty skrót wystarczy, a kiedy lepszy będzie dedykowany komponent blokowy.

Dzięki temu shortcodes pozostaną lekkim i przewidywalnym narzędziem, które realnie pomaga zespołowi tworzyć i utrzymywać treść.

Chcesz mieć dobrą stronę internetową?

Zadzwoń do nas. Porozmawiamy o stronie dopasowanej
do Twoich potrzeb.

601 162 666

Poprzedni wpis
Tworzenie sklepów internetowych Międzyrzec Podlaski
Zadzwoń Konsultacja