Kiedy mówię ludziom, że żyję ze zleceń z WordPressa, spotykam się zwykle z dwoma rodzajami reakcji. Pierwsza to zdziwienie, że tak w ogóle się da. Drugi rodzaj reakcji to zalanie pytaniami, bazujące na założeniu, że moja praca polega na robieniu stron z wykorzystaniem WordPressa. Takich od A do Z. I że muszę na tym nieźle zarabiać, bo przecież dzisiaj każdy chce zaistnieć w internecie.
Prawda jest jednak inna. Rzeczywiście projekty tworzone od podstaw są najciekawsze, dają najwięcej satysfakcji, jednak mało kogo na nie stać. W końcu zrobienie większej witryny „od zera” to kilkadziesiąt godzin pracy doświadczonego grafika, drugie tyle zabierze przełożenie tego na WordPressa. Na tego typu zlecenia pozwalają sobie raczej duże firmy i takich zleceń wpada kilka w roku.
Wśród „codziennych” zapytań od klientów więcej jest tak zwanej drobnicy: różnego rodzaju dostosowania gotowych motywów do wymagań klienta, dodanie jakiejś funkcjonalności, i – co ostatnio wpada do mnie coraz częściej – załatanie błędów. Kiedyś nie lubiłam tych ostatnich, potrafiłam odmówić ich realizacji jeszcze przed wgryzieniem się w problem. Ostatnio jednak kilka takich przyjęłam. I doszłam do zadziwiających mnie samą wniosków.
Na pogotowiu WordPressa można zarobić. I to całkiem dobrze w porównaniu z poświęconym czasem.
Czym się charakteryzują takie zlecenia:
- Są konkretne, dotyczą specyficznego problemu.
- Zleceniodawca jest zdesperowany i zmęczony bezowocnym szukaniem przyczyny błędu. Co oznacza naszą przewagę negocjacyjną. „Zapłacę. Byle tylko działało Pani Agnieszko”.
- Stanowią zamkniętą całość. Jak już naprawimy problem, temat zostaje zamknięty, w przeciwieństwie do oddania nowo tworzonej strony, gdzie błędy wychodzą dopiero w trakcie jej „życia”.
W dzisiejszym wpisie postanowiłam przeprowadzić case study trzech wybranych zleceń.
Zlecenie nr 1 – strona wyświetla tylko nagłówek
Problem
Dzwoni klient i mówi, że w dwóch jego witrynach wystąpił nagle ten sam problem. Na wszystkich podstronach pokazywany jest tylko nagłówek, mimo że do tej pory wszystko działało poprawnie.
Analiza problemu
Krok 1. Od czego zacząć analizę?
Proszę o namiar na stronę i dostęp do serwera ftp. Odpalam stronę w przeglądarce, włączam podgląd źródła i widzę, że strona faktycznie urywa się mniej więcej w miejscu, gdzie kończy się header. Dalej jest tylko nicość.
Zwykle za wygenerowanie części nagłówkowej w WordPressie odpowiada plik header.php motywu. Wchodzę więc do jego źródła, w polu „szukaj” edytora wpisuję frazę pozwalającą mi namierzyć ostatni widoczny na stronie fragment. Fraza zostaje znaleziona, a zaraz za nią widać bardzo dziwny fragment kodu. Atak, myślę sobie, bo wiem, że normalny kod tak nie wygląda.
<?php @error_reporting(0); if (!isset($eva1fYlbakBcVSir)) ... = $eva1tYlbakBcVSir;} ?>
Krok 2. Więc jednak atak…
Wrzucam powyższy fragment kodu w google’a. W odpowiedzi dostaję dziesiątki stron potwierdzających moje przypuszczenie. Obecność tego rodzaju kodu na stronie jest wynikiem infekcji. Wykorzystano lukę w programie timthumb.php, dostarczanym wraz z niektórymi motywami WordPressa i wtyczkami.
Usuwam feralny fragment, strona natychmiast wstaje do życia. Podejrzanego kodu szukam jeszcze w innych plikach danej witryny. Ostatecznie okazuje się, że zainfekowanych zostało kilkanaście źródeł php. Czyszczę wszystkie.
Krok 3. Jak zabezpieczyć się na przyszłość
Witryna wprawdzie wróciła do życia, ale skoro dziura jest, atak w każdej chwili może się powtórzyć. Problem został usunięty w którymś z kolejnych releasów programu timthumb. Trzeba zatem zrobić jego aktualizację.
Tutaj pomocna okazuje się gotowa wtyczka do WordPressa Timthumb Vulnerability Scanner. Skanuje ona katalog wp-content WordPressa w celu znalezienie niechlubnej wersji timthumb’a i daje możliwość wykonania jej aktualizacji do wersji bezpiecznej. Więcej o tej wtyczce przeczytasz na blogu u Oli.
Krok 4. Jak wycenić usługę?
No właśnie. Znalezienie problemu i usunięcie przyczyny błędu zajęło mi jakąś godzinkę. Średnia stawka godzinowa programisty WordPressa to podobno 60zł – zobacz wyniki ankiety, którą Konrad prezentował na WordCampie. Na tym samym WordCampie nauczyłam się innej ważnej rzeczy (tu oczko leci do Wojtka. Chociaż nie wiem, czy Wojtek je zauważy, bo on podobno tego bloga nie czyta, tylko skanuje):
Sprzedajesz wiedzę, nie czas.
Wyceniam usługę na 300zł netto. Klientowi sporządzam raport z przeprowadzonej akcji. Zadowolony jest i klient i ja.
Zlecenie nr 2 – newsy z feeda RSS nie odświeżają się
Problem
Klient ma dwa, powiązane ze sobą portale. Pierwszy informacyjny, drugi ogłoszeniowy, na którym zarabia. Żeby ściągnąć ruch na portal zarobkowy, na portalu informacyjnym (który oglądany jest częściej) wyświetlane są ostatnio dodane ogłoszenia z portalu ogłoszeniowego. W tym celu wykorzystywany jest feed RSS. Portal ogłoszeniowy udostępnia nowe wpisy w postaci feed’a RSS, a portal informacyjny korzysta z widgetu RSS, żeby je odczytać i automatycznie wyświetlać.
Na czym polega problem: mimo dodawania nowych ogłoszeń, nie zostają one wyświetlone w portalu informacyjnym. Co dziwniejsze, nie ma tu reguły. Klient twierdzi, że czasami nowe ogłoszenia się pojawiają, czasami nie.
Analiza problemu
Krok 1. Od czego zacząć analizę?
Dodaję nowe ogłoszenie, sprawdzam, czy pojawia się ono w feedzie RSS (w tym celu zwykle wystarczy do adresu bloga dodać końcówkę /feed np. dla tego bloga będzie to https://webfaces.pl/blog/feed/)
Tak. Podgląd źródła XML feeda portalu ogłoszeniowego przekonuje mnie, że nowe ogłoszenie trafiło do niego.
Krok 2. Zatem problem jest po stronie odbiorcy
Wchodzę na portal informacyjny. Upewniam się, że strona jest świeżo wygenerowana, żeby mieć pewność, że problem nie leży w cache’owaniu prezentowanego contentu. Okazuje się, że świeżutka, nie zcache’owana (jak to się pisze?) strona nadal nie widzi najnowszych wpisów pochodzących z feeda RSS.
Krok 3. Klucz tkwi w zadaniu odpowiedniego pytania
No to idę po radę do google’a. Tylko jak nazwać problem? Czyli jakie słowa kluczowe wpisać w wyszukiwarkę. Wiem, że używam widgetu RSS, problem polega na braku odświeżania. Decyduję się więc na taką oto frazę:
wordpress rss feed not refreshing
Kilka pierwszych wyników w SERP’ach okazuje się ścieżką donikąd. Niektórzy sugerują konflikty z wtyczkami. Podchodzę do tego sceptycznie, ale próbuję. Wyłączenie wszystkich wtyczek nie rozwiązuje problemu. Szukam dalej. W końcu wpadam na wpis o zachęcająco brzmiącym tytule Change WordPress RSS Widget refresh interval – jest coś o interwale odświeżania. Autor pisze, że domyślny czas odświeżania się widgetu RSS to 12 godzin. No to jesteśmy w domu!
Wystarczy go zmienić za pomocą prostego filtru dodanego do pliku funcions.php:
add_filter( 'wp_feed_cache_transient_lifetime', create_function('$a', 'return 900;') );
Czas podawany jest w sekundach. Powyższy przykład wymusi zatem odświeżanie treści odczytywanych przez WordPressowy widget RSS co 15 minut. No to nie musimy już czekać pół doby. I wyjaśniło się, dlaczego czasami ogłoszenia się pojawiały. One pojawiały się zawsze, niekiedy przypadkiem udało nam się wstrzelić w pobliże momentu odświeżenia.
Zlecenie nr 3 – a miało być tak pięknie
Problem
Klient zakupił profesjonalny szablon na ThemeForest. Wcześniej obejrzał jego wersję demo, która zapowiadała się naprawdę obiecująco. Po aktywacji motywu na swoim serwerze przychodzi rozczarowanie. To nie tak miało wyglądać. Strona raczej w ogóle nie wygląda (przykłady niżej). Klient zdaje sobie wprawdzie sprawę, że witryna nabierze wigoru po wypełnieniu zdjęciami i treścią, pozostaje jednak pytanie: jak to zrobić?
Po kilku godzinach prób przebicia się przez short code’y, znalezienia i zrozumienia dokumentacji technicznej, klient poddaje się, zwracając do mnie i zalewając morzem pytań z serii jak uzyskać ten efekt? „Pani Agnieszko, może zrobi Pani jakiś przykład, ja już potem polecę analogicznie. Zapłacę.”.
Porównanie wyglądu motywu typu premium widocznego w stronie demo (rys. 1) i po instalacji u klienta (rys. 2)
Analiza problemu
Krok 1. Jak podejść do problemu?
Rozwiązanie jest dużo prostsze niż można by przypuszczać. Motywy premium zakupione na stockach typu Theme Forest zwykle dostarczane są w pakiecie, w którym znajdziemy tzw. Sample Data. Czyli dane przykładowe, przygotowane przez autora motywu z myślą o jego wstępnym wypełnieniu. Najczęściej ich wykorzystanie da nam efekt identyczny jak ten, który widzimy na stronie demo.
Okazuje się, że mało kto z kupujących o tym wie. A jeśli nawet wie, to już wielką zagadką pozostaje, jak dane te wykorzystać.
Krok 2. A więc Sample Data, tylko co dalej?
Przykładowe dane, którymi szybko zasilimy naszą witrynę znajdują się w pliku z rozszerzeniem xml (dostarczonym w pakiecie motywu premium). Plik ten zwykle nazywa się nazwaMotywu.wordpress.sample.xml lub nazwaMotywu.wordpress.2012-04-19.xml.
Pierwszych kilka linijek źródła tego pliku zawiera instrukcję, w jaki sposób można zaczytać go do WordPressa. Sposób postępowania jest zawsze ten sam.
Jak wypełnić WordPressa przykładowymi danymi
- Zaloguj się do panelu WordPressa jako admin.
- Z menu po lewej wybierz Narzędzia, następnie Import.
- W tabelce kliknij ostatnią pozycję z hasłem WordPress: Zainstaluj importer z WordPressa, aby zaimportować wpisy, strony… .
- Zainstaluj Importera.
- Załaduj plik xml (znajdziesz go wśród plików pakietu zakupionego motywu premium).
- WordPress poprosi o wskazanie autora wpisów, a następnie zaimportuje dane przygotowane przez autora motywu.
Krok 3. Ucz się na przykładach
Analizując przykładowe dane szybko zrozumiesz specyfikę działania danego motywu.
Prawda że tego typu zlecenia mogą być ciekawą odskocznią od monotonii codziennej pracy? Już nie jeżę się na tego typu zapytania. A jeśli przy okazji okaże się, że prezentacja tego rodzaju studium przypadków na blogu zostanie dobrze przyjęta przez czytelników, będę mieć dodatkową motywację, żeby chętniej podejmować takie wyzwania i dzielić się zdobytą wiedzą. Nawet wówczas, gdy na początku nie mam zielonego pojęcia, jak ugryźć problem i jakie frazy w google wpisać. Bo przecież każdy problem już ktoś wcześniej miał, kwestia tylko jak znaleźć w necie jego rozwiązanie…
I takich wpisów nam trzeba więcej. Bardzo przydatne dla kogoś, kto „grzebie” w WP.
Przy okazji chciałem poinformować, że strona źle się wyświetla na urządzeniach mobilnych, np. iPad. Prawa krawędź kontenera jest przycięta. Wygląda na jakiś problem z ikoną RSSa, ale mogę się mylić.
Pshemko, dzięki i za pozytywna ocenę wpisu i za uwagę z wyświetlaniem. Przyjrzę się temu.
Wpis bardzo ciekawy, zainteresował mnie tym bardziej, że powoli zaczynam myśleć o zarabianiu w podobny sposób. Zdziwił mnie trzeci przypadek, rozwiązanie wydaje się być banalne i aż dziwne, że dana osoba sama na to nie wpadła.
Czekam na kolejne wpisy w tej kategorii, fajnie jakbyś informowała o cenie danego zlecenia.
Fajnie, że się podobał. Na WP można zarobić. Opowiadał o tym też Paweł Pela na WordCampie. Jak będzie transmisja na youtube, to polecam. Jeśli chodzi o cenach. Tu nie jest zawsze prosto. Dla przykładu, za zlecenie nr 2 nie wzięłam dodatkowej kasy, bo projekt dotyczył większej całości dla tego klienta. Czasami niektóre rzeczy nawet odpuszczam, jeśli dajmy na to klient ogólnie już dużo kasy u mnie zostawił. Wiesz, to trzeba bardzo indywidualnie podchodzić. Nie zawsze warto się szarpać się o każdy drobiazg, co nie znaczy, że nie wolno nam się cenić. Ale tam gdzie będę mogła, to ceny mogę podawać.
z niecierpliwością czekam na nagranie na yt. Zawsze mam problem, i to największy z wycena takich poprawek. Musze sobie wydrukować i przykleić na ścianę !! Sprzedajesz wiedzę, nie czas. !!
ale ostatnio z innej branży słyszałem tekst,
Mechanik za dokręcenie jednej śrubki zawołał 100zł. Klient mówi, Panie 100zł za jedną śrubki? Mechanik na to: za dokręcenie 1zł, 99zł za to, że wiedziałem którą 🙂
Pozdrawiam
Oloo, anegdotka jest świetnym podsumowaniem tego, co chciałam przekazać. Dzięki wielkie, będę mieć w rękawie, jako argument przy negocjacjach.
Świetna anegdota 😀
Nigdy tak na to nie patrzyłem, i też się dziwiłem ile niektóre usługi mogą kosztować, ale faktycznie prawda sama w sobie.
Znajomość niektórych nawet banalnych rzeczy jest efektem czasami wieloletniej analizy problemu – to ta analiza tyle kosztuje a nie samo rozwiązanie.
Witaj ponownie:)
Mam pytanie i wydaje mi się, że ten temat jest dobry do jego zadania.
Już na kilku moich stronach wordpressowych pojawił się wirus, a dokładniej wstrzyknięto właściwie w każdy plik php szkodliwy kod. Po wejściu na stronę z paska adresu, wszystko wygląda ok, ale już przez wyszukiwarkę, to nie jest tak różowo. Ogólnie kod przekierowuje ruch na inne strony.
Jak dobrze zabezpieczyć wp lub może serwer przed takim atakiem „z zewnątrz”?
Zwykłe CHMOD nie wystarczy raczej.
Pozdrawiam.
Krzysiek, polecam te dwa artykuły:
http://wpinternals.pl/porady/7-rad-wordpress-i-bezpieczenstwo-twojego-bloga-na-co-dzien/
http://wpinternals.pl/porady/bezpieczenstwo-twojego-bloga-co-ci-grozi-i-dlaczego/
Hej Aga!
Fajny art. Szczerze powiedziawszy ja również otrzymuję sporo zapytań z prośbą o naprawienie czegoś, lub skonfigurowanie.
W tym również jest potencjał – nie jestem w stanie określić, czy to jakaś nisza, niemniej jednak warto być otwartym dla Klienta.
Uwielbiam szukać dziury w całym i naprawiać błędy jak detektyw inwektyw 🙂 lub 'na wczoraj’ przenieść Klientowi stronę z joomli na WP – jest w tym sporo frajdy.
Tak jak piszesz podstawą wyceny jest wiedza, a nie czas który spędziłaś naprawiając problem…
Fakt – czasem problem jest tak prozaiczny, że naprawiam go za free, mając jednak świadomość że zadowolony Klient wkrótce powróci z innym zleceniem…
WPambulatorium rządzi! 🙂
Hej Mariusz!
Cieszę się zawsze, gdy w komentarzach dopisują się kolejni ludzie po fachu. Tylko mi proszę nie pisz, że też byłeś w Gdańsku na WordCampie (tak jak ktoś gdzieś tam w komentarzach), bo ja Cię z WordCampa nie kojarzę. A jak nie byłeś to polecam Ci te zloty, nigdzie więcej nie znajdzie się ludzi z branży w jednym miejscu i czasie.
Tak, zabawa w detektwa-inwektywa może nieźle wciągać! Wiem coś o tym 🙂
pewnie, że byłem… jakże mógłbym odpuścić wordcampa i to w sąsiednim miejście… stałem nawet przez chwilę na mównicy ;)))
nie widziałem Cię na middle party, ani na prezentacjach… ja siedziałem na przeciwko mównicy z tyłu a Ty?
No to teraz podpadłeś. A więc to Ty się kryjesz pod tą fotą! Cały WordCamp liczyłam, że podejdziesz zagadać. Przecież znamy się z WordCampa w Poznaniu!
no pewnie, że znamy – ale Cię nie widziałem… przefarbowałaś się? Gdzie siedziałaś?
Przefarbowałam? Nie, raczej zestarzałam. Ja rozumiem, że starszych pań się już mimowolnie nie zauważa, nawet jak siedzą samotnie w pierwszym rzędzie.
oj… szkoda.. :<
trzeba było krzyknąć, racę odpalić lub chustką białą załopotać 😉
następnym razem z pewnością się zobaczymy!
Będę na WPUP w Wawie w styczniu:
http://arek.bibliotekarz.com/wydarzenie/2012/10/wordup-warszawa#axzz2BNCYSZjf
no to się widzimy w Wawie! 🙂
żeby nie było: https://www.dropbox.com/s/z2jrlosr9jh3zad/2012-10-11%2016.26.23.jpg :)))
Kolejny ŚWIETNY artykuł! Zabawna ta sytuacja z szablonem z themeforest ^^
Dopiero zaczynam i dopiero miałem kilka zrobionych stron. Póki co są to przeróbki gotowych motywów do WordPressa. Wiem, że jeszcze wiele nauki przede mną (kocham rozwój) i często sporo czasu mi zajmuje zrobienie, tego czego klient sobie życzy. Przez to nie czuję się jeszcze pewnie, aby mówić o wysokich kwotach za pracę. Zgadzam się, że wycena to indywidualna sprawa zależnie komu i co robi się. Bardzo by mi pomogło jakbyś czasem zamieściła obok opisu wykonanego zlecenia jaką kwotę za to zadanie wzięłaś. Jak na razie moje kwoty za zmiany w motywie wahają się w przedziale 100-250 zł. Dzięki za podzielenie się swoim doświadczeniem.
Paweł, chętnie bym podała ceny, ale nie mogę tego zrobić (ochrona danych klientów). Ale planuję napisać artykuł na ten temat i tam rzucę kwotami, choć bardziej ogólnie.
Super! Licze na więcej takich ciekawostek. Pozdrawiam.