O własną wtyczkę pytają mnie najczęściej właściciele stron i sklepów, którzy przejrzeli już katalog WordPressa i kilka płatnych dodatków, a żaden nie robi dokładnie tego, czego potrzebują. Dedykowana wtyczka WordPress to kod napisany pod jedną konkretną funkcję Twojej firmy: nietypowy cennik, integrację z systemem, którego nikt poza Tobą nie używa, albo proces, który dziś ktoś w biurze przepisuje ręcznie. Pytanie rzadko brzmi, czy da się ją napisać, bo prawie zawsze się da. Brzmi raczej: kiedy wychodzi taniej niż kupienie i naginanie gotowca, i kto będzie ją utrzymywał, gdy WordPress dostanie kolejną aktualizację.
Poniżej rozkładam to na trzy decyzje: kiedy gotowiec przestaje wystarczać, od czego zależy koszt napisania i utrzymania oraz jak wybrać między kupnem, dostosowaniem a pisaniem od zera. Rachunku licencji gotowych wtyczek i wyboru motywu tu nie powtarzam - opisałem je osobno i linkuję niżej.
Dedykowana wtyczka WordPress - czym jest, a czym nie jest
Wtyczka to osobny pakiet kodu, który WordPress ładuje obok motywu. Podpina się pod tak zwane haki, czyli miejsca, w których WordPress i WooCommerce pozwalają dołożyć własne zachowanie: przy zapisie zamówienia, przy liczeniu ceny w koszyku, przy wysyłce maila. Dzięki temu własna funkcja nie wymaga grzebania w rdzeniu systemu i przeżywa jego aktualizacje, o ile jest napisana zgodnie z tymi zasadami.
Wtyczka na zamówienie to nie to samo co przeróbka cudzej wtyczki. Zmiany wpisane bezpośrednio w pliki gotowego dodatku znikają przy jego najbliższej aktualizacji. A jeśli ktoś wyłączył aktualizacje, żeby te zmiany ochronić, strona zostaje z kodem, którego nikt już nie łata.
Nie jest to też fragment wklejony do pliku functions.php motywu. Taki kod znika przy zmianie motywu i po roku nikt nie pamięta, że tam jest. Własna wtyczka żyje osobno: ma swoją nazwę, wersję i historię zmian, a wyłączenie jej to jedno kliknięcie w panelu.
Kiedy gotowa wtyczka przestaje wystarczać
Gotowa wtyczka jest dobrym wyborem, dopóki robi to, czego potrzebujesz, bez obchodzenia jej ograniczeń. Problem zaczyna się wtedy, gdy wokół niej rośnie warstwa łatek. Sygnały, które widzę najczęściej u klientów:
- Kupujesz drugą wtyczkę, żeby poprawić pierwszą. Jeden dodatek liczy rabaty, drugi poprawia to, jak wyświetlają się w koszyku, trzeci robi z tego raport. Każdy ma swojego autora, swoje aktualizacje i swój pomysł na to samo pole w bazie.
- Gotowiec robi wiele rzeczy, a Ty używasz jednej. Panel z mnóstwem opcji, z których klikasz dwie, ładuje się przy każdym wejściu na stronę, a każda jego aktualizacja może zmienić coś, czego nawet nie znasz.
- Proces firmy jest nietypowy. Cennik per kontrahent liczony z umowy, wysyłka zależna od magazynu, dokument w formacie wymaganym przez Twój system. Gotowce robią wersję uśrednioną, a różnicę ktoś nadrabia ręcznie.
- Integracja z systemem, którego nikt inny nie ma. Własny program magazynowy, starszy ERP albo hurtownia z własnym API. Na taką integrację nie ma rynku, więc nie ma też gotowca.
- Aktualizacja gotowca regularnie coś psuje. To znak, że pracujesz na krawędzi tego, do czego wtyczka była projektowana.
Jeden sygnał to jeszcze nie powód, żeby pisać od zera. Kilka naraz zwykle oznacza, że płacisz za obchodzenie gotowca więcej, niż kosztowałby własny kod - tylko płacisz w czasie zespołu i w awariach, a nie jedną fakturą.
Koszt napisania i utrzymania - widełki rynkowe
Na pytanie, ile kosztuje wtyczka WordPress pisana pod firmę, uczciwa odpowiedź zaczyna się od zakresu, nie od kwoty. Pod tą samą nazwą kryje się prosty dodatek do koszyka i integracja z systemem magazynowym. Poniższe rzędy wielkości traktuj jako punkt odniesienia, nie jak cennik - zależą od zakresu i zmieniają się z roku na rok.
| Zakres | Przykład | Rząd wielkości na rynku |
|---|---|---|
| Pojedyncza nowa funkcja | kalkulator, własne pole w koszyku, prosty panel dla klienta | od kilkuset do kilku tysięcy złotych |
| Integracja z zewnętrznym systemem | ERP, magazyn, kurier, fakturowanie | kilka tysięcy złotych w górę |
| Rozliczenie od godziny | gdy wykonawca nie wycenia zakresu z góry | od kilkudziesięciu do kilkuset złotych za godzinę |
Te same rzędy wielkości rozpisałem szerzej w tekście o tym, ile kosztuje programista WordPress. Tu ważniejsze jest to, co przesuwa koszt w górę albo w dół:
- Liczba miejsc, w które wtyczka się wpina. Funkcja widoczna tylko w panelu to co innego niż funkcja, która zmienia naraz koszyk, zamówienie, maila i fakturę.
- Zewnętrzne systemy. Każde API to dokumentacja, środowisko testowe albo jego brak i przypadki brzegowe, których nie widać w opisie.
- Dane historyczne. Jeśli wtyczka ma przejąć zamówienia albo klientów z dotychczasowego rozwiązania, dochodzi przeniesienie danych i jego sprawdzenie.
- Panel ustawień. Opcje do klikania przez zespół kosztują więcej niż wartości zapisane na stałe w kodzie.
Utrzymanie to druga połowa rachunku i ta, o której najrzadziej mówi się przy wycenie. Własna wtyczka nie ma licencji do odnowienia, ale nie jest napisana raz na zawsze. Wpływają na nią:
- aktualizacje WordPressa i WooCommerce, które zmieniają zachowanie haków albo wycofują stare funkcje
- zmiana wersji PHP na hostingu
- zmiany po stronie zewnętrznych systemów: nowa wersja API, nowe pola, wygaszony stary adres
- nowe potrzeby firmy, bo wtyczka zwykle rośnie razem z procesem
Przy wtyczce z testami automatycznymi przegląd po dużej aktualizacji to uruchomienie testów i sprawdzenie kluczowych ścieżek na kopii roboczej. Bez testów każda aktualizacja oznacza ręczne przeklikanie wszystkiego od nowa i nadzieję, że nic nie umknęło.
Gotowa wtyczka premium ma odwrotny profil kosztów: mały wydatek na start, ale roczna licencja, która w praktyce jest abonamentem na aktualizacje i wsparcie. Po jej wygaśnięciu wtyczka zwykle działa dalej, tylko przestaje dostawać poprawki. Jak takie licencje sumują się w sklepie, pokazałem w tekście o realnych kosztach wtyczek WooCommerce.
Jak wybrać: kupić, dostosować czy napisać
| Wariant | Kiedy ma sens | Na co uważać |
|---|---|---|
| Kupić gotowca | funkcja jest standardowa, gotowiec robi ją w całości, autor regularnie wydaje aktualizacje | licencja na konto firmy, nie wykonawcy; data ostatniej aktualizacji |
| Dostosować gotowca | gotowiec robi większość, brakuje jednego zachowania | zmiany przez haki w osobnej małej wtyczce, nigdy w plikach gotowca |
| Napisać własną | proces nietypowy, integracja bez gotowca, kilka wtyczek łata jedną funkcję | zakres na piśmie, kod w repozytorium firmy, plan utrzymania od początku |
Środkowy wariant jest niedoceniany. Wiele gotowych wtyczek zostawia własne haki właśnie po to, żeby dało się zmienić ich zachowanie z zewnątrz. Zamiast pisać całość od nowa, dopisuje się obok małą wtyczkę, która zmienia jedno zachowanie i przeżywa aktualizacje gotowca. Drobiazgi, takie jak własne pole w koszyku czy prosty warunek wysyłki, to często kilkanaście linijek kodu zamiast kolejnej rocznej licencji.
Przed decyzją odpowiedz sobie na cztery pytania:
- Czy gotowiec robi to, czego potrzebuję, bez drugiej wtyczki do poprawiania pierwszej?
- Czy ma aktywnego autora i regularne aktualizacje?
- Czy przez tę funkcję idą pieniądze albo dane klientów?
- Kto będzie ją utrzymywał za rok?
Jeżeli na pierwsze dwa odpowiadasz twierdząco, kup. Jeżeli gotowiec jest blisko, ale nie do końca, dostosuj. Jeżeli przy trzecim i czwartym żaden gotowiec nie daje dobrej odpowiedzi, to moment na własny kod. Podobna logika, czyli gotowiec wygrywa na starcie, a kod pisany pod firmę po czasie, działa przy wyborze gotowego motywu albo szytego na miarę, tyle że tam chodzi o wygląd całej strony, a tu o jedną funkcję.
Co robię inaczej - kod w repozytorium, testy i przekazanie praw
Rozbudowę istniejącej strony albo sklepu o brakującą funkcję prowadzę w ramach rozwoju i optymalizacji. Zanim zaproponuję własną wtyczkę, sprawdzam, czy problemu nie rozwiąże gotowiec albo jego dostosowanie. Wchodzę w kod i naprawiam fundament, zamiast doklejać kolejną wtyczkę, ale nie piszę też od zera czegoś, co już istnieje i działa.
Kiedy własna wtyczka ma sens, pracuję tak:
- Kod w repozytorium klienta od pierwszego dnia. Nie przy odbiorze - od początku pracuję w repozytorium firmy, więc kod jest tam, gdzie ma zostać.
- Testy. Każdą linię testuję i biorę za nią odpowiedzialność. W swoim zestawie narzędzi mam testy automatyczne - PHPUnit i Pest do logiki, Playwright do ścieżek w przeglądarce - więc przegląd po aktualizacji WordPressa nie jest zgadywaniem.
- Licencje na konto klienta. Jeśli rozwiązanie korzysta z płatnych dodatków, licencje kupowane są na firmę klienta, żeby aktualizacje przychodziły także po zakończeniu współpracy.
- Przekazanie praw. Prawa do tego, co napisałem na zamówienie, przechodzą razem z ostatnią płatnością, na piśmie, ze wskazaniem zakresu. Kopia, którą uruchomi u siebie dowolny programista, jest częścią odbioru.
- Stała cena za ustalony zakres. Wycenę dostajesz na piśmie przed startem, więc znasz kwotę, zanim cokolwiek powstanie.
Robię tak, bo własna wtyczka to kod, od którego firma zaczyna zależeć. Jeśli leży tylko u wykonawcy, zamieniasz zależność od autora gotowca na zależność od jednej osoby. O tym, co z kodu i grafik faktycznie należy do firmy po zapłacie, pisałem w tekście o przeniesieniu praw autorskich do strony.
Najczęstsze pytania
Kiedy warto zamówić dedykowaną wtyczkę? Gdy obchodzenie gotowca kosztuje Cię więcej niż własny kod: kilka wtyczek łata jedną funkcję, proces firmy jest nietypowy albo potrzebujesz integracji z systemem, do którego nikt nie napisał dodatku. Przy funkcjach standardowych gotowiec z aktywnym autorem zwykle wygrywa.
Ile kosztuje wtyczka na zamówienie? Zależy od zakresu. Rynkowo pojedyncza funkcja to od kilkuset do kilku tysięcy złotych, a integracja z zewnętrznym systemem kilka tysięcy w górę. Konkretną kwotę da się podać dopiero po opisaniu, co wtyczka ma robić, gdzie się wpina i z czym rozmawia.
Kto utrzymuje wtyczkę po aktualizacjach WordPressa? Ten, kto ma jej kod i wie, jak jest zbudowana - dlatego kod musi leżeć w repozytorium Twojej firmy, a nie tylko u autora. Może to być autor w ramach stałej opieki albo inny programista, któremu przekażesz repozytorium. Przy wtyczce z testami przegląd po aktualizacji jest krótki, bez testów trzeba ręcznie przejść każdą ścieżkę.
Czy własna wtyczka spowolni stronę? Nie musi. Dobrze napisana ładuje tylko to, czego używa, a gotowiec z mnóstwem opcji często wczytuje więcej, niż strona potrzebuje. Jeśli własna wtyczka zwalnia stronę, przyczyna zwykle siedzi w zapytaniach do bazy - a to widać w kodzie i da się poprawić, bo masz do niego dostęp.
Masz to u siebie i nie wiesz, od czego zacząć? Przyspieszam i naprawiam istniejące strony i sklepy - Core Web Vitals, awarie, rozbudowa o funkcje, których brakuje. Zobacz, jak to wygląda u mnie: rozwój i optymalizacja stron i sklepów.