Przemilczany problem ze shortcode’ami

The-Unspoken-Problem-of-Shortcodes

Shortcode’y są jednym ze szczytowych osiągnięć WordPressa. Shortcode’y stanowią pomost między programistami a twórcami stron, umożliwiając umieszczanie złożonych elementów treści niemal w dowolnym miejscu. Twórcy wtyczek uwielbiają shortcode’y, ponieważ zapewniają one większą elastyczność w kwestii tego, jak i gdzie użytkownicy wyświetlają swoje treści.

Jeśli nie wiesz, czym są shortcode’y i jak wyglądają, to te archaiczne, przypominające kod teksty ujęte w nawiasy kwadratowe. Wyglądają mniej więcej tak:

Ten konkretny nazywa się shortcode embed i jest domyślnie wbudowany w WordPressa. Osadza on wideo z podanego adresu URL w Twojej treści. Po prostu skopiuj i wklej powyższy shortcode na swojej stronie, jeśli chcesz go wypróbować.

Za kulisami dzieje się tak, że gdy WordPress napotka shortcode w Twojej treści, zostaje on przetworzony i przekształcony w coś innego. W naszym powyższym przypadku, za każdym razem, gdy shortcode

zostanie wykryty, WordPress pobiera adres URL z shortcode’a i sprawdza go na liście obsługiwanych dostawców treści. Gdy takiego znajdzie, pobiera odpowiedni kod osadzania iframe i wyświetla go w zamian.

W czym więc tkwi problem? Brzmi to wystarczająco prosto: wpisujesz krótki tekst w nawiasach i gotowe.

I tu wkracza Shortcode API..

Mnóstwo shortcode’ów

Shortcode API otwiera przed programistami możliwość tworzenia shortcode’ów. Dzięki temu programiści mogą dodawać własne shortcode’y w swoich wtyczkach.

To świetnie, bo teraz za pomocą zaledwie krótkiego fragmentu przypominającego kod (stąd nazwa „shortcode”), zarówno początkujący, jak i zaawansowani użytkownicy mogą umieścić praktycznie dowolny rodzaj treści w dowolnym miejscu.

Domyślnie WordPress ma tylko garść shortcode’ów. Łatwo wpisać je z pamięci, bo jest ich zaledwie kilka. Jednak po zainstalowaniu kilku wtyczek liczba shortcode’ów szybko wzrasta do kilkunastu lub więcej, a w niektórych przypadkach nawet do ponad stu. Każdy shortcode ma swój własny zestaw atrybutów i instrukcję obsługi. Każda wtyczka najprawdopodobniej posiada jakąś dokumentację wyjaśniającą działanie wszystkich jej shortcode’ów oraz listę dostępnych parametrów. Trzeba by jednak oszaleć, by próbować zapamiętać wszystkie shortcode’y i ich atrybuty.

Problem polega na tym, że nie ma scentralizowanego miejsca, w którym można znaleźć wszystkie shortcode’y dostępne na Twojej stronie oraz dowiedzieć się, jak z nich korzystać.

Niektórzy próbują rozwiązać ten problem

Niektóre wtyczki próbują rozwiązać ten problem, prezentując wszystkie swoje shortcode’y w łatwo dostępnej liście rozwijanej. Kliknięcie jednego z nich wstawia shortcode wraz ze wszystkimi możliwymi atrybutami. Nie trzeba już niczego zapamiętywać, co jest dużą zaletą.

Screen-Shot-2016-06-22-at-11.27.09-AM

Niektórzy idą dalej i dodają wyskakujące okienko ustawień z polami wyboru i próbnikami kolorów, aby uzupełnić atrybuty shortcode’a.

Screen-Shot-2016-06-22-at-11.28.54-AM

To rozwiązanie poniekąd działa. Jednak każda wtyczka wymienia tylko własne shortcode’y. Więc jeśli każda wtyczka tworzy własną formę selektora shortcode’ów, nieuchronnie nadejdzie moment, w którym na ekranie pojawi się wiele różnych selektorów (zdarzyło mi się to w przeszłości).

Screen-Shot-2016-06-22-at-11.22.41-AM

Innymi słowy, każda wtyczka robi swoje i wdraża własne rozwiązanie dla swoich shortcode’ów. Niektóre wtyczki dodają nowy przycisk obok przycisku „Dodaj media” lub nowy wewnątrz edytora TinyMCE.

Więc teraz możesz pomyśleć: „Dlaczego by po prostu nie zebrać shortcode’ów z innych wtyczek i nie dołączyć ich również do swojej listy rozwijanej / selektora shortcode’ów?”. Cóż, dokładnie tak pomyślałem. Ale łatwiej to powiedzieć niż zrobić. Za chwilę wyjaśnię dlaczego, ale najpierw zobaczmy, jak wyglądałoby idealne rozwiązanie.

Idealne rozwiązanie

Idealnym planem byłoby stworzenie wtyczki, która gromadzi wszystkie dostępne shortcode’y na Twojej stronie, a następnie przedstawia Ci listę i pomaga uzupełnić wszystkie atrybuty. A za każdym razem, gdy zainstalujesz nową wtyczkę, wszystkie nowo wprowadzone shortcode’y również zostaną Ci zaprezentowane.

Wyobraź sobie centralne miejsce, w którym umieszczone byłyby wszystkie Twoje shortcode’y z łatwym dostępem. Każdy shortcode opisywałby, co robi i do jakiej wtyczki należy. Z kolei dla każdego dostępnego atrybutu wyobraź sobie etykietę, właściwy sposób wyboru wartości oraz opis. Widziałbyś listy rozwijane, próbniki kolorów, przyciski radiowe, przełączniki i tym podobne.

Coś takiego ułatwiłoby nam życie jako twórcom stron internetowych i treści. Koniec ze sprawdzaniem różnych dokumentacji czy przeszukiwaniem różnych części panelu administracyjnego tylko po to, by skopiować wygenerowany shortcode dla slidera, którego chcesz użyć.

Haczyk

Niestety, w tej chwili zrobienie czegoś takiego jest dość trudne. Nie ma niezawodnego sposobu, aby poznać wszystkie szczegóły danego shortcode’a. Możesz uzyskać listę wszystkich shortcode’ów, ale tylko ich właściwe tagi/nazwy; nie uzyskasz żadnych dodatkowych informacji na ich temat, takich jak lista atrybutów, to, co robią, oraz ich typy – np. ciąg znaków, kolor czy liczba. Nie uzyskasz też nawet namiastki opisu dla poszczególnych atrybutów.

Uwaga dla programistów: tak, istnieje nowo dodany trzeci argument dla funkcji shortcode_atts, ale nie jest on argumentem wymaganym. Dopóki więc każdy programista wtyczek na świecie go nie zaimplementuje, wciąż nie będziemy mieli pewnego sposobu na ustalenie wszystkich atrybutów shortcode’a.

Shortcode API nie zapewnia żadnego mechanizmu dodawania opisów shortcode’ów, rzutowania typów atrybutów ani opisów atrybutów. I dopóki sam WordPress nie doda centralnego miejsca dostępu do shortcode’ów, wątpię, aby taki mechanizm kiedykolwiek powstał.

Podsumowanie

W tej chwili zadanie porządkowania shortcode’ów pozostawiono każdemu programiście z osobna. Dopóki w WordPressie nie zostanie opracowana scentralizowana metoda, możesz spodziewać się, że w panelu administracyjnym nadal będziesz widzieć wiele przycisków „Dodaj shortcode”. To, czy coś takiego powinno zostać dodane do rdzenia WordPressa, czy nie, jest już zupełnie osobną, obszerną dyskusją.

Alternatywa

Istnieją wtyczki do tworzenia stron (page buildery), które podchodzą do tego inaczej. Zamiast programowego wykrywania shortcode’ów oferują narzędzia do mapowania shortcode’ów, w których użytkownicy mogą ręcznie wprowadzić każdy szczegół shortcode’a. Po wykonaniu tej czynności staje się on dostępny w ramach page buildera. Choć  to działa, są one dostępne tylko na Twojej własnej stronie.

My w Page Builder Sandwich tworzymy coś, co – miejmy nadzieję – rozwiąże tę zagwozdkę z shortcode’ami. Zapisz się do naszego newslettera poniżej, aby otrzymywać powiadomienia o naszych postępach.