WordPress: zrozumieć shortcode

Shortcode’y są krótkimi kodami, dzięki którymi możemy bardzo prosto zarządzać treścią. Każdy zapewne zna BBCode, w którym to wpisanie [b]coś[/b] w efekcie da nam <strong>coś</strong>, czyli po prostu pogrubione coś. WordPress udostępnia swoim użytkownikom możliwość całkowitej modyfikacji takich kodów. Całkowitej, bowiem mamy możliwość stworzenia własnych kodów całkowicie od zera i zgodnie z naszymi potrzebami.

Sam nie dostrzegałem potęgi Shortcodów dopóki się nie przekonałem na własnej skórze, jak mogą być przydatne w redagowaniu wpisów. Upraszczają niezmiernie proces tworzenia dając nam możliwość definiowania samej zawartości w blokach, które się powtarzają.

[info]Chodzi tylko i wyłącznie tutaj o bloki tego typu. Powtarzają się klasy, oraz sam kod takiego bloku. Różni się jedynie zawartość/treść, która jest w nim publikowana. Shortcody upraszczają ten proces do przytoczonego przeze mnie wcześniej BBCode’a.[/info]

Tym bardziej z racji na fakt, że programistą nie byłem, nie jestem oraz nie będę to jakoś czarno widziałem swoją przyszłość z tym mechanizmem. Tymczasem uważam, że na dobre zadomowił on na moim blogu i prędko stąd go nie wypuszczę. Albowiem systematycznie mam zamiar wzbogacać swe Shortcody o nowe pozycje.

Słowem wstępu – objaśnienie dzialania

Cała definicja Shortcodów znajduje się w pliku functions.php naszego szablonu, a same kody podzielić możemy na te mniej złożone (w których jest tylko jedna zmienna), oraz te bardziej złożone (z wieloma zmiennymi). Skupmy się jednak póki co na tym prostszym kodzie, bowiem na jego przykładzie wyjaśnię funkcjonowanie Shortcodów w WordPressie.

Najprościej będzie mi wyjaśnić funkcjonowanie na czymś, co jest doskonale znane. Znów więc odwołam się do BBCode i pogrubienia. Zapis w functions.php dla tego kodu będzie wyglądał następująco:

function pogrubienie( $atts, $content = null ) {
return '<strong>'. $content .'</strong>';
}
add_shortcode( 'b', 'pogrubienie' );

Co ten kodzik nam robi? Ano pogrubienie informuje iż zdefiniowana została taka funkcja, a add_shortcode( 'b’, 'pogrubienie’ ); włącza Shortcode

[b]. W efekcie, tłumacząc na chłopski rozum, wygląda to tak, że:
Piszemy nowy wpis na blog i używamy kodu [b]super tekst[/b]

. WordPress sprawdza i… aha! mam zdefiniowany taki Shortcode. Prześlę więc „super tekst” do funkcji pobrubienie i zmiennej $content. Tym sposobem tekst „super tekst” zostaje wstawiany w miejsce $content i w efekcie na stronie wyświetlony zostanie napis super tekst (czyli w kodzie HTML będzie to <strong>super tekst</strong>).

Zapewne zdążyliście zauważyć już, w którym miejscu definiuje się nazwę Shortcodu, a w którym nazwę funkcji. Proste, prawda?

Nie sam content napędza shortcody

W powyższym przykładzie pokazałem, jak to informacje przekazywane są do zmiennej $content. Oczywiście zmienna ta może w Shortcodzie występować więcej jak jeden raz. Jednakże to nie wszystko. Do dyspozycji mamy bowiem te bardziej złożone kody, w których mamy możliwość definiowania własnych zmiennych.

function informacje($atts, $content = null) {
		extract(shortcode_atts(array(
			"info1" => 'Dodaj atrybut: info1=',
			"info2" => 'Dodaj atrybut: info2='
		), $atts));
	return '<strong>'. $content .'</strong><u>'. $info1 .'</u><em>'. $info2 .'</em>';
}
add_shortcode( 'infoshortcd', 'informacje' );

W przykładzie tym mamy już 3 zmienne obsługiwane przez shortcode: content, info1, oraz info2. Kod został nazwany info-shortcd, więc jest on obsługiwany poprzez

[infoshortcd].

Użycie tego kodu wygląda następująco: [infoshortcd info1=”Tekst do info1″ info2=”Tekst do info2″]Tekst do content[/infoshortcd]

. Efektem będzie:

<strong>Tekst do content</strong><u>Tekst do info1</u><em>Tekst do info2</em>

Czyli: Tekst do contentTekst do info2Tekst do info2

Co jednak stanie się, jeśli użyjemy tylko i wyłącznie [infoshortcd]? Nie zadziała? Zadziała, oczywiście że zadziała. Wyświetli nam się:

<strong></strong><u>Dodaj atrybut: info1</u><em>Dodaj atrybut: info2</em>

Wydaje mi się, że jest to teraz o wiele łatwiejsze do zrozumienia :).


Komentarze

4 odpowiedzi na „WordPress: zrozumieć shortcode”

  1. Czuję, że byłem w pewnym sensie inspiracją :)

    1. Tak, byłeś bo u Ciebie podpatrzyłem i powiedziałem sobie, że chcę takie mieć ;).

  2. a czy myślałeś o tym jak zrobić shortcode wyświetlający liczbę wykopów dla danego wpisu? jest to możliwe?

    1. Z tego co teraz zerknąłem na to, to problemu nie ma z tym ;). Musiałbyś zrobić tylko kilka klas i przerzucić je do URL. Wykop ma taki skrypt, że wyświetla tę wykopywarkę w zwykłym iframe. Wszystko, czego potrzebujesz, jest tutaj.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *