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');