Zlecenia z WordPressa – studium przypadków z życia wziętych

Zlecenia z WordPressa

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

Zlecenie z WordPressa - krok 1.1

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;} ?>

Zlecenie z WordPressa - krok 1.2

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.

Zlecenie z WordPressa - krok 1.3

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.

Zlecenie z WordPressa - krok 1.4

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

Zlecenie z WordPressa - krok 2.1

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.

Zlecenie z WordPressa - krok 2.2

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.

Zlecenie z WordPressa - krok 2.3

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)

Wygląd strony WordPressowej z wypełnionymi danymi, na przykładzie motywu CrossApple
Rys. 1. Motyw wypełniony danymi, widok ze strony demo
Wygląd strony WordPressowej bez danych, na przykładzie motywu CrossApple
Rys. 2. Ten sam motyw po instalacji u klienta (bez danych)

Analiza problemu

Zlecenie z WordPressa - krok 3.1

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ć.

Zlecenie z WordPressa - krok 3.2

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

  1. Zaloguj się do panelu WordPressa jako admin.
  2. Z menu po lewej wybierz Narzędzia, następnie Import.
  3. W tabelce kliknij ostatnią pozycję z hasłem WordPress: Zainstaluj importer z WordPressa, aby zaimportować wpisy, strony… .
  4. Zainstaluj Importera.
  5. Załaduj plik xml (znajdziesz go wśród plików pakietu zakupionego motywu premium).
  6. WordPress poprosi o wskazanie autora wpisów, a następnie zaimportuje dane przygotowane przez autora motywu.
Instalacja Importera - ilustracja kroku 3
Instalacja Importera - ilustracja kroku 3
Instalacja Importera - ilustracja kroku 4 - instalacja Importera
Instalacja Importera - ilustracja kroku 4
Instalacja Importera - ilustracja kroku 5
Instalacja Importera - ilustracja kroku 5

Zlecenie z WordPressa - krok 3.3

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…

Inne wpisy o podobnej tematyce

Zanim powiesz: Tego nie da się zrobić

Wygoda użytkownika w WordPressie

Dziś zamiast wstępu teatrzyk.

Występują:

  • Użytkownik – klient zlecający projekt z WordPressa. Nie jest informatykiem, szuka prostych rozwiązań.
  • Programista Typ A (Abnegat) – jest dobrym programistą, ale ma dosyć utarczek z użytkownikami, którzy przecież i tak nie rozumieją jego świata.
  • Programista Typ B (Biznesmen) – dobrze rokujący programista, zorientowany na szybki zarobek.
  • Programista Typ C (Chcę się rozwijać) – programista, który wsłuchuje się w użytkownika, bo wie, że w ten sposób sam się może wiele nauczyć, a zadowolony klient wraca.

Czytaj dalej Zanim powiesz: Tego nie da się zrobić

Jak przeprowadzić rewitalizację bloga – część 1: zmiany ogólne

Lepszy blog na WordPressie

Napisał do mnie pewien bloger, pasjonat świata weba i tematyki SEO z prośbą o wycenę zlecenia zmiany i adaptacji skórki bloga WordPressowego. Zakres zmian wykraczał poza budżet, który klient mógł na modernizację przeznaczyć. Szkoda mi było jednak odrzucić to zlecenie, gdyż blog przejawiał duży, choć ukryty potencjał. Zaproponowałam więc taką oto umowę: podejmę się rewitalizacji tego bloga pod warunkiem, że całość działań opiszemy w formie artykułu na moim blogu. Klient zgodził się, czego efektem jest ten wpis.

Czytaj dalej Jak przeprowadzić rewitalizację bloga – część 1: zmiany ogólne

[rozwiązany] Problem liczby mnogiej w tłumaczeniu motywu WordPressa

Jak poprawnie przygotować motyw WordPressa na obsługę liczby mnogiej

Wpis będzie odpowiedzią do dyskusji, jaka wywiązała się pod artykułem na dev.wpzlecenia dotyczącym prawidłowej odmiany informacji o liczbie komentarzy. Autor artykułu słusznie zwrócił uwagę na potrzebę dbałości o poprawną odmianę słówka „komentarze” na blogu w WordPressie.

Czytaj dalej [rozwiązany] Problem liczby mnogiej w tłumaczeniu motywu WordPressa

Jak zwiększyć liczbę komentarzy na blogu w WordPressie

Jak zwiększyć liczbę komentarzy na blogu

Atrakcyjna galeria handlowa. Dziesiątki stoisk z ciekawym asortymentem. Jestem tu po raz pierwszy, podoba mi się. Z zapałem przeglądam bogatą ofertę poszczególnych sklepów. Gdy opada początkowa euforia uświadamiam sobie, że jednak coś tu nie gra… I powoduje, że czuję się nieufnie. Po chwili już wiem. Mimo godzin szczytu nie spotykam innych klientów. Sprzedawcy niby są, ale też jakby gdzieś się pochowali.

Czytaj dalej Jak zwiększyć liczbę komentarzy na blogu w WordPressie

Zlecenia z WordPressa – 5 rozwiązań, które poznałam dzięki klientom

Zlecenia z WordPressa - nauka od klientów
Zlecenia z WordPressa bywają są różne, podobnie jak różni bywają zlecający je klienci. Z niektórymi współpracuje się tak dobrze, że aż żal kończyć projekt. Trafiają się niestety i tacy, o których można powiedzieć „diabli nadali”. Ci ostatni na pewno dają nam do myślenia. I niekoniecznie są to rozważania czysto programistyczne. Na przykład, zaczynamy się zastanawiać, czy inwestycja w kurs asertywności nie będzie lepsza niż w kolejny podręcznik o programowaniu webowym.

Czytaj dalej Zlecenia z WordPressa – 5 rozwiązań, które poznałam dzięki klientom

Adaptacja rotatora z WordPressem – przykład użycia własnych typów wpisów

Rotator w WordPressie - tutorial

Rotatory zdjęć zalały świat weba. Zanim pomyślisz, że są na tyle popularne, że lada dzień wyjdą z mody, przeczytaj ten artykuł. Zanim powiesz, że są dziesiątki gotowych wtyczek, za pomocą których dodasz slider do bloga w WordPressie, pomyśl, ile tracisz, rozwiązując każdą zachciankę za pomocą wtyczki. Albo inaczej – zobacz, co zyskasz, próbując samodzielnie zintegrować rotator zdjęć z WordPressem.

Czytaj dalej Adaptacja rotatora z WordPressem – przykład użycia własnych typów wpisów

Jak zrobić menu obrazkowe w WordPressie – tutorial

WordPress - menu na obrazkach

Już kilka osób pytało w komentarzach, jak w WordPressie wykonać menu z obrazkami. Zainteresowanie tematem wcale mnie nie dziwi – menu obrazkowe może uatrakcyjnić wygląd i podkreślić indywidualny charakter strony. A pytanie, jak „wbić się” z własnymi grafikami do menu generowanego przez WordPressa, długo stanowiło zagadkę i dla mnie. Do momentu, gdy poznałam klasę Walker, której zastosowanie opisałam w artykule Ujarzmić menu w WordPressie….

Czytaj dalej Jak zrobić menu obrazkowe w WordPressie – tutorial

Własny formularz w WordPressie, czyli jak dołączyć swój kod php

WordPress formularz php

Już dawno nie zaglądałam do statystyk odwiedzin tego bloga. Właśnie to zrobiłam i oniemiałam: najwięcej wejść z wyszukiwarek jest na hasło „WordPress jak dołączyć plik php”. Nie byłoby w tym może nic szczególnego, w końcu to blog o WordPressie, jednak nie przypominam sobie, żebym w ogóle pisała artykuł na ten właśnie temat.

Czytaj dalej Własny formularz w WordPressie, czyli jak dołączyć swój kod php

Chmura tagów – sztampowy wypełniacz czy wzmocnienie dla bloga?

Chmurę tagów można spotkać na niemal co drugim blogu w WordPressie. Jej obecność wydaje się uzasadniona: rzut oka i już wiemy, jaka jest tematyka bloga. Dodatkowo, najczęściej powtarzające się hasła są w jakiś sposób wyróżnione, a każde z nich jest klikanym odnośnikiem do grupy artykułów z nim powiązanych, co stanowi przy okazji miły ukłon w stronę optymalizacji bloga pod SEO.

Czytaj dalej Chmura tagów – sztampowy wypełniacz czy wzmocnienie dla bloga?