Przeglądając forum pomocy WordPress odnalazłem takie oto pytanie, które mi przypomniało, że miałem napisać wpis o tym jak dodać wsparcie dla shortcodów w widgetach, a nie tylko we wpisach i na stronach:
Zainstalowałem na stronie plugin Logo Showcase (…). Tym razem jest inaczej. Zamiast zadziałać i zacząć wyświetlać loga, pokazuje tylko shortcode [logoshowcase] . Shortcode dodany jest w widgecie „teskt”
Na początek warto dodać, że większość motywów domyślnie ma uaktywnioną obsługę shortcodów w widgetach tak jak np. Twenty Seventeen (zdjęcie poniżej).
Jednak, jeżeli wsparcie to nie jest uaktywnione i zamiast oczekiwanej treści widzimy wpisaną treść „czystym tekstem” – wystarczy jedna linijka kodu dodana do pliku functions.php – najlepiej motywu potomnego lub osobnej wtyczki funkcyjnej.
add_filter('widget_text','do_shortcode');
Dzieje się tak dlatego, ponieważ WordPress filtruje i ogranicza działanie shortcodów tylko do edytora wpisów i stron, a ten kod dodaje odpowiednie uprawnienia dla widgetu „Text”.
Możesz to też zrobić prostą wtyczką
Istnieją w repozytorium wtyczki, które uaktywniają tę funkcjonalność, jednak posiadają wiele zbędnych, a nawet niebezpiecznych funkcji takich jak domyślne zezwolenie na wykonywanie kodu PHP w widgetach – Poniższa wtyczka zawiera tylko tę funkcjonalność i nie spowalnia działania strony.
[ninja-popup ID=778]