WordPress Themes: Jak dodać obsługę shortcode w widgetach?

Okazuje się, że nie każdy motyw WordPressa korzysta ze wszystkich dobrodziejstw tego systemu CMS. Co zrobić w sytuacji, gdy twórca motywu nie przewidział możliwości używania shortcodów w widgetach? Prawidłową odpowiedzią jest: bierzemy sprawy w swoje ręce. A raczej palce.

 

Wykonanie

Rozwiązanie jest proste. Trzeba jedynie umieścić jedną linijkę w kodzie motywu:

add_filter('widget_text', 'do_shortcode');

Powyższy kod odpowiada za uruchamianie funkcji do_shortcode (czyli wykonaj shortcode) wewnątrz widgetów typu „tekst”. Fragment należy umieścić w pliku functions.php.

 

Bonus: obsługa shortcode w komentarzach, zajawkach i szablonach

Komentarze:

add_filter('comment_text', 'do_shortcode');

Zajawki artykułu:

add_filter('the_excerpt', 'do_shortcode');

Szablony motywu:

$content = do_shortcode(get_the_content());

W pozostałych miejscach, o których nie wspomniałem wystarczy użyć funkcji do_shortcode, aby uzyskać oczekiwany wynik. Poniżej przykład wykonania shortcode’u zawartego w opisie użytkownika:

$userdata = get_userdata($user_id);
$description = do_shortcode($userdata->description);

 

Bonus 2: unautop

Warto również dodać, że istnieje możliwość pozbycia się automatycznych akapitów, które tworzą się wewnątrz widgetu tekstowego po wybraniu odpowiedniej opcji w panelu administracyjnym. Dokonujemy tego za pomocą filtru shortcode_unautop. Można zastosować to rozwiązanie dla każdego opisanego wcześniej elementu WordPressa.

add_filter('widget_text', 'shortcode_unautop');
add_filter('widget_text', 'do_shortcode');