WordPress case study: jak dodałam niestandardowe funkcje w LearnPress

WordPress, jako prosty CMS do budowy bardzo zaawansowanych stron internetowych, ma wiele zalet, ale ja doceniam chyba najbardziej tę jedną: jeśli coś nie jest dostępne w standardzie, to bardzo często da się to stosunkowo łatwo dopisać customowym kodem. LearnPress (wtyczka do stworzenia platformy kursów online) nie jest tu wyjątkiem, choć na pierwszy rzut oka potrafi sprawiać wrażenie zamkniętego systemu, w którym wszystko jest po prostu zainstalowane, skonfigurowane w intuicyjny sposób, po czym ma działać bez zbędnych komplikacji.

Ostatnio pracowałam nad wdrożeniem, które z pozoru wyglądało niewinnie. Kursy miały wymagać dodatkowych zgód już na etapie wyboru, a nie dopiero przy płatności. Do tego jeden konkretny kurs miał mieć zupełnie inną metodę płatności niż wszystkie pozostałe. Bez zbędnej i obciążającej stronę instalacji WooCommerce, bez przebudowy checkoutu i bez kombinowania po stronie serwera. Brzmi jak coś, czego LearnPress nie przewiduje? No właśnie. Czytałam w powiązanych z LearnPress wątkach na forach, że inne osoby również potrzebują takiej funkcjonalności, ale niestety nie zostało to zrezlizowane.

To wdrożenie zresztą, wykonane przeze mnie od zera, już i tak było dość zindywidualizowane, ponieważ zastosowałam w nim szereg automatyzacji, które na przykład umożliwiają wysyłanie innej wiadomości e-mail dla każdego zakupionego kursu. Taka opcja jest w WooCommerce, ale w LearnPress już nie. Ale dzisiaj nie o tym.

Własne checkboxy przy wyborze kursu w LearnPress

W wielu kursach online samo kliknięcie „Kup teraz” na stronie internetowej to za mało. Czasem trzeba zebrać konkretne zgody, potwierdzić regulamin, zaakceptować dodatkowe warunki albo jasno postawić granicę jeszcze zanim użytkownik przejdzie do płatności.

Problem w tym, że LearnPress standardowo obsługuje takie rzeczy dopiero na etapie checkoutu, a i tak jest tam jedna tylko domyślna zgoda dla każdego kursu. To oznacza jedno – użytkownik dowiaduje się o wymaganiach za późno. Kliknięcie, przejście dalej, a dopiero potem pojawia się konieczność akceptacji warunków, które narzuca forma kursu czy inne indywidualne wymagania prawne. Frustracja i utrata zainteresowania zakupem w takiej sytuacji są bardzo prawdopodobne.

Dlatego ten problem został przeze mnie rozwiązany już na wcześniejszym etapie – dokładnie na stronie kursu, przed przejściem do strony „koszyka”. Checkboxy pojawiają się obok przycisku „Kup teraz” i są twardo wymagane. Jeśli nie zostaną zaznaczone, po prostu nie będzie możliwe przejście dalej. Bez przeładowań, bez błędów systemowych i bez zaskoczeń po drodze.

Efekt jest prosty, ale bardzo istotny. Każdy kurs może mieć własne wymagania, użytkownik wie, na co się zgadza, a proces zakupowy pozostaje czysty i logiczny. I co ważne – bez ingerencji w system płatności i stronę rozliczenia.

Dedykowane metody płatności dla wybranych kursów w LearnPress

Druga część wdrożenia była bardziej wymagająca, bo dotyczyła płatności. Założenie miałam jasne: jeden konkretny kurs ma być opłacany wyłącznie przez PayU. Wszystkie pozostałe kursy mają mieć tylko Stripe. Bez opcji wyboru, bez dodatkowych komunikatów i bez ręcznego przełączania czegokolwiek przez użytkownika.

Tu pojawia się klasyczny problem LearnPressa – brak tradycyjnego koszyka, do którego można się łatwo odwołać po stronie serwera. Nie da się więc po prostu powiedzieć „jeśli w koszyku jest kurs X, to pokaż metodę Y”.

Rozwiązanie przyszło z innej strony. Skoro użytkownik zaczyna proces zakupowy na stronie kursu, to właśnie tam można zapisać informację o tym, jaki kurs został wybrany. ID kursu jest zapisywane w przeglądarce i przekazywane dalej, aż do checkoutu. Na stronie płatności skrypt sprawdza, z jakim kursem mamy do czynienia, a następnie na tej podstawie pokazuje lub ukrywa odpowiednie metody płatności.

Użytkownik widzi tylko jedną, właściwą opcję. Jest ona od razu aktywna, rozwinięta i gotowa do użycia. Bez martwych przycisków, bez „kliknij jeszcze raz” i bez sytuacji, w której coś wygląda jak dostępne, ale nie działa.

Indywidualne modyfikacje WordPressa – da się

To podejście daje ogromną kontrolę nad całym procesem zakupowym. Logika biznesowa zaczyna się już na stronie kursu, a checkout jest tylko naturalnym domknięciem decyzji użytkownika. Dokładnie tak, jak powinno to wyglądać w dobrze zaprojektowanym procesie sprzedaży.

Co ważne, to rozwiązanie jest skalowalne. Można dodawać kolejne kursy z innymi wymaganiami, innymi metodami płatności i innymi zasadami, bez przebudowy LearnPressa, bez grzebania w bazie danych i bez konfliktów z aktualizacjami.

Ten case pokazuje jedno bardzo wyraźnie: WordPress i LearnPress nie są ograniczeniem. Ograniczeniem bywa tylko podejście „nie da się”. A kiedy zna się strukturę systemu, podstawy JavaScript i wie, gdzie reagować na zachowanie użytkownika, nagle okazuje się, że da się dokładnie tak, jak trzeba.

A jeśli Ty potrzebujesz jakiejś niestandardowej modyfikacji, zapraszam do kontaktu. Ogarniemy to wspólnie!