Programista WordPress w Kolonii

WordPress dla firm w Kolonii, realizowane zdalnie przez jednego programistę.

Programista WordPress

Moje miejsce w społeczności WordPress

Kontekst lokalny: Skalowalna architektura dla rosnących produktów, wysoki poziom bazowego bezpieczeństwa oraz wielojęzyczne ścieżki użytkownika zoptymalizowane pod rynek lokalny i międzynarodowy.

  • Konto na wordpress.org mam od 2006 roku.
  • Współtworzyłem rdzeń WordPressa w wersjach 7.0 i 7.1.
  • Utrzymuję 30 wtyczek na wordpress.org.
  • Organizuję WordCampy i występuję na nich jako prelegent.
  • Byłem na każdym WordCamp Europe od 2017 do 2026 roku.
  • Lokalne spotkania WordPressa: WordPress Meetup Köln

Mój profil na WordPress.org

Programista WordPress & WooCommerce w Kolonii

01. Wydajność dla lokalnego SEO

W Kolonii, gdzie konkurencja jest wysoka, szybkość strony to Twój najważniejszy atut SEO. Nasz stack Astro + Headless WP gwarantuje wyniki, które zostawiają konkurencję w tyle.

02. Bezpieczeństwo poziomu Enterprise

Dla firm w Kolonii obsługujących sektor Startupy i firmy korporacyjne, bezpieczeństwo danych jest priorytetem. Architektura Headless wirtualnie eliminuje najczęstsze wektory ataków na WordPressa.

Strona firmowa w Kolonii stoi przy MediaParku, przy Riehler Straße albo przy Messeplatz 1. To nie jest powód, żeby WordPress udawał system emisji albo polisę. To powód, żeby motyw, bloki Gutenberg, CPT i wtyczki były napisane tak, jak oczekuje niemiecki dział prawny, redakcja nadawcy i polski redaktor, który publikuje z Warszawy albo Krakowa, a panel ma po niemiecku.

WPPoland buduje ten WordPress dla firm z DACH, które mają siedzibę, oddział albo klientów Kolonii. Zakres to programowanie WordPress: motyw blokowy albo klasyczny, własne wtyczki, Gutenberg, CPT, ACF albo natywne bloki, integracje REST i code review w repozytorium Git. Sklep WooCommerce i abonament opieki są osobnymi tematami, z linkami na końcu.

#Co obejmuje programowanie WordPress w Kolonii?

Kolonia jest największym miastem Nadrenii Północnej-Westfalii i jednym z dwóch najgęstszych węzłów telewizyjnych w Niemczech. WDR jako nadawca prawa publicznego i RTL Deutschland jako prywatna grupa trzymają tu centrale, studia i archiwa. MediaPark, Coloneum w Ossendorfie i gmachy przy Appellhofplatz to nie tło do sloganu. To jest brief modelu treści: program, odcinek, osoba, redakcja, lokalizacja studia, publikacja. Obiekty, nie kolejne strony skopiowane z zeszłego sezonu.

Drugi klaster miasta to ubezpieczenia. DEVK ma centralę przy Riehler Straße 190 w Kolonii-Riehl. Gothaer, Generali Deutschland i AXA dokładają korporacyjne biura w tym samym węźle. 25 marca 2026 roku zarząd DEVK wycofał plan wieży o wysokości 144 metrów przy Zoo-Parkhaus; jako przyczyny podano home office i cyfryzację, które obniżyły zapotrzebowanie na powierzchnię biurową. Sama centrala jest w trakcie sanacji, a powrót około 2 400 pracowników zaplanowano na pierwsze półrocze 2028. WordPress kariery, intranetu albo serwisu produktowego, który w tym okresie zmienia nagłówek „bo FSE ładniej wygląda”, produkuje incydent wizerunkowy, nie drobny deploy.

Po drugiej stronie Renu Koelnmesse dokłada kalendarz, który w developmentcie jest ograniczeniem wydania. imm cologne 2026 wróciło do stycznia: 20-23 stycznia, hale 4, 5 i 10, hasło World of Interiors. spoga+gafa: 22-24 czerwca. gamescom: 26-30 sierpnia, z Opening Night Live 25 sierpnia; 26 sierpnia to dzień fachowy i medialny, teren Messeplatz 1, 50679 Köln. Kind + Jugend: 15-17 września, hasło Growing with AI. DMEXCO: 23-24 września. ORGATEC: 27-30 października, hasło From rooms to relationships. Anuga w tym cyklu wraca w 2027. Nowa architektura motywu, nowy CPT albo zmiana mapy hreflang nie wchodzi na produkcję w tych oknach. Daty idą do runbooka wydań, nie do hardcoded stringa w front-page.php.

Typowy brief, który trafia do seniorów, nie brzmi „zróbcie ładną stronę”. Brzmi: odziedziczony motyw z page builderem, redakcja w Polsce, compliance w Kolonii, Gutenberg używany jak klasyczny edytor, a nowa podstrona pod targi powstaje przez kopiowanie strony z zeszłego gamescom i ręczne podmienianie numeru hali. To jest problem modelu treści i procesu Git, nie problem szablonu z ThemeForest.

#Motyw blokowy, motyw klasyczny i własna wtyczka

Nowa budowa w Kolonii startuje od decyzji, która później kosztuje miesiącami: czy prezentacja żyje w motywie blokowym z theme.json, czy w klasycznych szablonach PHP, i co idzie do wtyczki. Ta decyzja jest zapisywana przed pierwszym commitem.

#theme.json, wzorce i granica motywu

Motyw blokowy przechowuje tokeny projektu: paletę, skalę typografii, odstępy i szerokości treści. Dla B2B z Riehl i MediaParku oznacza to stonowaną paletę korporacyjną, czytelny krój bez ozdobników i przyciski, które nie pękają na niemieckich złożeniach w stylu Barrierefreiheitserklärung, Datenschutzerklärung albo Versicherungsbedingungen. Wzorce bloków opisują powtarzalne układy: hero z zastrzeżeniem prawnym, siatka osób z redakcji, blok cytatu z atrybucją, karta stoiska z numerem hali, karta produktu z klauzulą, stopka z Impressum. Redaktor składa landing targowy albo stronę odcinka z wzorców, zamiast prosić programistę o nowy szablon na każde DMEXCO.

Full Site Editing (FSE) ma sens, gdy redakcja naprawdę ma sama zmieniać nagłówek i stopkę. W praktyce wiele central ubezpieczeniowych i nadawców tej kontroli nie chce: nagłówek jest elementem brandu i Pflichtangaben, a nie placem zabaw. Wtedy motyw blokowy zostaje, ale części szablonu (nagłówek, stopka) są zablokowane, a redakcja pracuje na wzorcach i własnych blokach. To kompromis, nie półśrodek.

Każdy własny blok ma block.json, kategorię, ikonę i atrybuty opisane schematem. Tam, gdzie treść ma trafić do wyszukiwarki i RSS, renderuję ją po stronie serwera. React w edytorze służy do InspectorControls i podglądu. Front nie ma być aplikacją SPA udającą WordPressa. Dokumentacja na developer.wordpress.org to dla mnie źródło prawdy o API WordPressa.

#Kiedy klasyczny motyw PHP zostaje

Odziedziczone instalacje w Kolonii często mają pięć, siedem lat: child theme na komercyjnym szkielecie, ACF wklejone w page.php, shortcode’y w treściach, jQuery z epoki przed blokami, osobna kopia strony pod każdy gamescom. Przepisanie tego na FSE, „bo w 2026 tak wypada”, kosztuje więcej niż naprawa hierarchii szablonów, przeniesienie logiki do wtyczki i dodanie Gutenberga tylko tam, gdzie redakcja naprawdę składa nowe landingi.

Klasyczny motyw zostaje, gdy:

  • logika warunkowa siedzi w szablonach (inne menu dla gościa targowego, inne dla kandydata, inne dla agenta terenowego) i przeniesienie jej do theme.json nic nie upraszcza;
  • zespół redakcyjny publikuje setki stron w klasycznym edytorze i szkolenie z FSE byłoby większym ryzykiem niż dług;
  • child theme jest cienki, a problemem są wtyczki i autoload, nie sam silnik szablonów.

Nawet wtedy nowe klocki idą jako bloki, nie jako kolejne shortcode’y. Shortcode w treści z 2019 roku zostaje do migracji. Nowy kod go nie dokłada.

#Funkcja do wtyczki, wygląd do motywu

Granica jest prosta i zapisana w runbooku. Motyw umie pokazać. Wtyczka umie wiedzieć. CPT odcinka, kolejka do DAM, endpoint REST dla intranetu, rola „redaktor PL” bez publish_pages na produkcji niemieckiej: to wtyczka. Kolory, siatka, wzorzec hero: to motyw. Jeśli po zmianie motywu znika katalog hal albo lista odcinków, architektura była zła.

Własna wtyczka ma własny prefix, autoload PSR-4, plik główny z nagłówkiem Plugin Name i wersją semver oraz testy tam, gdzie logika liczy (daty wydarzeń, mapowanie pól do CRM, walidacja formularza zapisu na stoisko, status odcinka). Logika biznesowa nie trafia do functions.php motywu, bo functions.php umiera razem z motywem, a serwis z MediaParku zmienia agencję brandingową częściej niż model treści.

Porównanie warstw przy kickoffie:

WarstwaCo tam żyjePrzykład w Kolonii
Motywprezentacja, tokeny, wzorcelanding na gamescom, stopka z Impressum
WtyczkaCPT, role, REST, integracjeodcinek, produkt, stoisko, logi audytowe
Gutenbergredakcja bez HTMLwzorzec hali, blok osoby, karta programu
środowisko testowe i Gitproces, nie featuregałąź, review, freeze przed Koelnmesse

#Gutenberg, CPT i ACF pod media, polisy i targi

Gutenberg bez modelu treści kończy się tym, że każda podstrona to inna układanka bloków i nie da się z nich zrobić listy. W Kolonii listy są konkretne: programy, odcinki, osoby z redakcji, lokalizacje studiów (MediaPark to nie Coloneum, Coloneum to nie Messeplatz), produkty ubezpieczeniowe, oddziały, publikacje, stoiska. To są obiekty, nie „kolejne strony w drzewie”.

#Własne typy treści zamiast kopiowanych landingów

CPT rejestruję z własnymi kapabilities, nie z mapowaniem na post. Redaktor w Polsce ma edytować kartę odcinka albo stoiska, a nie kasować wtyczek. Archiwum CPT dostaje szablon albo wzorzec zapytań. Widok pojedynczego wpisu ma szablon, który trzyma ustalony układ i nie pozwala go rozjechać. Taksonomie są osobne: typ wydarzenia (imm cologne, gamescom, Kind + Jugend, DMEXCO, ORGATEC) nie miesza się z tagami bloga. Typ treści medialnej (program, odcinek, osoba) nie miesza się z taksonomią produktową ubezpieczyciela.

ACF ma tu miejsce, ale nie jako substytut bloków. Pola ACF na CPT sprawdzają się przy danych, które są polami, nie layoutem: data emisji, numer hali, numer stoiska, język rozmowy przy stoisku, plik PDF planu, flaga „Opening Night Live”, numer polisy w materiale informacyjnym, status odcinka. Layout strony osoby albo artykułu składa Gutenberg. ACF Flexible Content razem z pełnym edytorem bloków na tym samym wpisie daje dwa źródła prawdy i redaktora, który nie wie, gdzie kliknąć.

Tam, gdzie ACF nie jest potrzebne, wystarczą atrybuty bloku w block.json. Blok „osoba z cytatem” nie potrzebuje osobnej grupy pól na każdej stronie. Potrzebuje atrybutów i ewentualnie InnerBlocks na biogram. Mniej wtyczek w panelu to mniej powierzchni ataku i mniej konfliktów z niemieckimi wtyczkami consent i cache.

Landing targowy jako kopia strony z zeszłego roku jest długiem, który wychodzi w sierpniu. Obiekt CPT z polami roku, hali i locale przeżywa gamescom 2027 bez kopiowania drzewa. Szablon czyta obiekt. Redaktor zmienia numer hali, nie HTML. To samo dotyczy sezonu programowego: nowy odcinek to nowy obiekt, nie zduplikowana strona z podmienionym tytułem.

#Bloki serwerowe zamiast shortcode’ów

Shortcode w treści to dług, który wychodzi dopiero przy migracji. Nowy kod w Kolonii idzie jako blok z renderem serwerowym: znaczniki semantyczne, atrybuty w komentarzu bloku, możliwość filtrowania wyjścia. Blok listy stoisk albo listy odcinków czyta CPT, cache’uje zapytanie transjentem z jawnym TTL i invalidacją przy save_post, a nie przy każdym requeście z hali.

Dla redakcji dwujęzycznej każdy ciąg w bloku przechodzi przez funkcje i18n WordPressa (__(), _x(), esc_html__). Niemiecki string wkodowany w PHP jest wyjątkiem, nie regułą. Tłumaczenia leżą w plikach .po, nie w hardcoded tablicy w motywie. Polylang albo WPML dokładam, gdy naprawdę są dwa języki na froncie. Sam panel w DE i treści w PL da się ogarnąć rolami i locale użytkownika, bez pełnego stosu wielojęzycznego. EN na froncie dla gości targowych to już pełny stos: hreflang, osobne slugi, test WAF, PDF Impressum, którego wtyczka translatora nie ma prawa nadpisać.

Przy review bloku sprawdzam trzy rzeczy, zanim gałąź trafi do main: czy blok działa z wyłączonym JS na froncie, czy atrybuty mają typy i wartości domyślne i czy nie ładuje na froncie całego kodu edytora. Gutenberg, który dokłada megabajt Reacta do strony osoby z zarządu, nie przejdzie review.

#Redakcja DE i formalne Sie

Najczęstsze tarcie we współpracy Polska - Kolonia nie jest w PHP. Jest w rejestrze. Niemiecki UI strony firmowej z DACH używa formy grzecznościowej Sie. Polski redaktor, który tłumaczy z headlinera napisanego u siebie na „ty”, publikuje tekst, który przy Hohenzollernbrücke brzmi jak newsletter siłowni. To jest brief językowy i lista ciągów motywie, nie wtyczka.

Zasady, które wpisuję w dokumentację motywu:

  • Ciągi interfejsu (przyciski, błędy formularza, aria-label, placeholder) są po niemiecku w formalnym Sie, jeśli front jest DE. Angielski wariant, jeśli jest, też jest formalny. Polski wariant, jeśli powstaje, nie kopiuje Sie jeden do jednego, tylko naturalny polski rejestr B2B.
  • Redaktorzy w Polsce dostają locale panelu, w którym potrafią pracować. To nie musi być ten sam język co front. Mieszanie locale użytkownika z locale strony bez testu kończy się datami w złym formacie i menu, które ucieka z „Beiträge” na „Wpisy” w połowie ekranu.
  • Typografia niemiecka: ß, umlauty, długie złożenia. Przyciski i pozycje menu mają rezerwę szerokości. To jest decyzja w motywie, nie ticket po pierwszym zgłoszeniu z Riehl.
  • Impressum, Datenschutz i oświadczenie o dostępności są szablonami z polami, nie blokami, które redaktor może usunąć z drzewa. W Kolonii te strony są elementem zgodności, nie stopką marketingową. Wersja EN, jeśli istnieje, dostaje własne pola, nie maszynowy przekład niemieckiego tekstu prawnego.

Polylang i WPML rozwiązują hreflang i kopie językowe. Nie rozwiązują procesu: kto akceptuje niemiecki tekst, zanim pójdzie na produkcję. W briefie zapisuję, czy akceptacja leży po stronie klienta w Kolonii, po stronie redakcji nadawcy, czy po stronie polskiego content leada. środowisko testowe pokazuje locale obok siebie, bo regresja „DE się zepsuło, bo ktoś edytował EN” wychodzi dopiero na porównaniu, nie w Lighthouse.

Dla nadawcy i ubezpieczyciela dochodzi glosariusz. Nazwy programów, marek produktowych i tytułów zawodowych nie wolno nadpisać wtyczką translatora. Słownik leży w dokumentacji motywu i w plikach .po. DeepL w nocy nie jest procesem redakcyjnym.

#Dostępność: BITV 2.0, BFSG i Koelnmesse

Dostępność w Kolonii nie jest jednym przepisem. Sektor publiczny (strony Stadt Köln, Universität zu Köln, nadawca prawa publicznego) podlega BITV 2.0. Rozporządzenie odsyła do EN 301 549. Na sierpień 2026 roku obowiązująca warstwa web to WCAG 2.1 na poziomie AA (EN 301 549 V3.2.1). Wersja 4.1.1 normy, zmapowana na WCAG 2.2, była w finale głosowania latem 2026 i cytowanie w Dzienniku Urzędowym oczekiwano na jesień. BITV dokłada obowiązki, których czysty WCAG nie kopiuje jeden do jednego: oświadczenie o dostępności, kanał informacji zwrotnej, a na stronach władz także Leichte Sprache i Deutsche Gebärdensprache. To jest kontekst rynku, nie certyfikat WPPoland.

Sektor prywatny od 28 czerwca 2025 roku ma BFSG, niemieckie wdrożenie European Accessibility Act. BFSG nie jest BITV. Trafia w usługi konsumenckie, między innymi handel elektroniczny, z wyłączeniem mikroprzedsiębiorstw przy usługach. Czysta strona informacyjna centrali ubezpieczyciela, bez zakupu, rezerwacji i płatności, zwykle nie wpada w ten sam koszyk. Serwis, przez który klient zawiera umowę albo składa wniosek, już tak. Zespół nie sprzedaje więc „zgodności BITV” prywatnemu landingowi produktowemu ani „BFSG” intranetowi. Na kickoffie zapisuję, który reżim w ogóle dotyczy witryny, a potem testuję to, co da się przetestować w motywie i blokach.

Metodologia BIK BITV-Test, opisana na bitv-test.de, jest punktem odniesienia dla audytu publicznego, nie pieczątką, którą zespół wystawia sam sobie. Jeśli testu BIK nie było, w ofercie nie ma certyfikatu. Skan axe w CI jest bramką, nie dowodem zgodności.

gamescom i DMEXCO są lokalnym barometrem, którego inne miasta Nadrenii nie mają w tej skali. Wystawcy, organizacje i stoiska medialne przyjeżdżają do Kolonii rozmawiać o produkcie przed kamerą i przed klawiaturą. Landing wystawcy, który na tygodniu gamescom ma niedziałający focus, kontrast poniżej AA albo formularz bez etykiet, jest błędem produktowym, nie „ticketem UX na po targach”. Dla developmentu wynika z tego twardy odbiór: skan axe w CI plus ręczna ścieżka klawiatury na wzorcu stoiska, zanim tag wejdzie na produkcję.

Co konkretnie robi zespół w kodzie:

  • Semantyka: jeden h1, kolejność nagłówków, przycisk jako button, link jako a, nie div z kliknięciem.
  • Klawiatura i focus: omijanie powtarzalnej nawigacji, widoczny focus, brak pułapek w mega menu i w modalu zapisu na stoisko albo na newsletter programu.
  • Kontrast i ruch: tokeny w theme.json, szacunek dla prefers-reduced-motion, brak informacji niesionej samym kolorem. Autoplay w hero odcinka nie omija tej reguły.
  • Formularze: etykiety powiązane z polami, błędy w tekście, nie tylko w kolorze ramki. Zgoda na locale EN nie może znikać, bo szablon woła stary filtr.
  • Media: tekst alternatywny jako pole wymagane w procesie redakcji, nie jako „uzupełnimy później”. Odcinek bez transkryptu albo bez podpisu nie przechodzi odbioru, jeśli brief mówi o BITV.
  • PDF: jeśli plan hali, warunki ubezpieczenia albo regulamin idzie jako załącznik, klauzula 10 EN 301 549 (dokumenty poza WWW) trafia do briefu. WordPress nie zrobi z JPG-a dostępnego PDF-a.

Skan automatyczny (axe, Lighthouse) jest bramką CI, nie dowodem zgodności. Dla klienta z sektora publicznego albo z BFSG w zakresie e-commerce dokładam ręczną ścieżkę klawiatury i porównanie z listą WCAG. Zespół nie wystawia certyfikatu BIK BITV-Test, jeśli testu nie było. Nie obiecuje Leichte Sprache ani DGS prywatnej stronie produktowej, bo to obowiązek innej klasy podmiotów.

Sklep i checkout to osobna rozmowa. Jeśli brief schodzi na WooCommerce, zakres przenosi się na programistę WooCommerce w Kolonii.

#Git, środowisko testowe i zamrożenie wydania

To jest warstwa, która odróżnia seniorskie prace WordPress od wgrania ZIP-a na FTP. Klient z IT w Kolonii zapyta o to na drugim spotkaniu, szczególnie gdy compliance ubezpieczyciela albo redakcja nadawcy chce śladu, kto wgrał zmianę.

Repozytorium trzyma motyw i własne wtyczki. Wtyczki z katalogu WordPress.org i Core nie żyją jako skopiowane foldery w Gicie, chyba że jest twardy powód (fork, łatka, air-gap). Gałąź funkcyjna na jedną zmianę: nowy blok, nowy CPT, poprawka a11y. Pull request ma opis, ekrany albo nagranie z edytora i checklistę: i18n, dostępność, brak sekretów, czy blok nie psuje klasycznego szablonu jeśli jeszcze żyje.

Przegląd kodu robię sam. Review czyta WordPress Coding Standards (PHPCS, sniffs WordPress-Core), ale też czyta intencję: czy CPT nie powinien być wtyczką, czy ACF nie dubluje atrybutów bloku, czy hook nie wisi na init bez potrzeby. Komentarz w PR piszę w języku, który wybierze recenzent po stronie klienta. Niemiecki dział IT przy centrali w Kolonii zwykle woli niemiecki w dokumentacji redakcyjnej i angielski w diffie.

Środowisko testowe to kopia produkcji z zanonimizowanymi danymi. WP-CLI search-replace na URL, osobne klucze, wyłączone crony, które wysyłają maile do prawdziwych gości stoiska albo do bazy agentów. Redakcja klika po stagingu z prawdziwymi wzorcami Gutenberg, nie po localhoście programisty. Regresja wielojęzyczna (DE/EN), regresja klawiatury i regresja hreflang dzieją się tutaj. Promocja na produkcję jest udokumentowanym krokiem: tag albo merge do main, build zasobów, cache warmup, ścieżka wycofania (poprzedni tag). Zespół nie wgrywa „na szybko” jednego pliku PHP przez SFTP, bo potem nikt nie odtworzy, co stało na produkcji w piątek przed otwarciem bram przy Deutz.

Zamrożenie wydania przy kalendarzu Koelnmesse jest decyzją developerską, nie tylko operatorską. W oknie imm cologne, gamescom, Kind + Jugend, DMEXCO albo ORGATEC na produkcję nie wchodzi nowy theme.json, nowy CPT, zmiana mapy URL ani przebudowa nagłówka. Łatka bezpieczeństwa, która nie może czekać, idzie jako hotfix przez środowisko testowe, z rollbackiem zapisanym zanim ktoś naciśnie deploy. Daty 2026, które trzymam w runbooku wydań:

WydarzenieDaty 2026Co nie wchodzi na produkcję
imm cologne20-23 stycznianowy motyw, zmiana hreflang, nowy CPT
spoga+gafa22-24 czerwcazmiana wzorca karty stoiska
gamescom26-30 sierpniaFSE na nagłówku, nowy build JS, nowy CPT
Kind + Jugend15-17 wrześniaprzebudowa landingów wystawcy
DMEXCO23-24 wrześniazmiany w formularzu i focusie
ORGATEC27-30 październikazmiana archiwum CPT

gamescom ma własne okno montażu: entertainment area od 16 sierpnia, korytarze wolne 25 sierpnia o 18:00, Opening Night Live tego samego wieczoru. Dla wystawcy freeze developerski zaczyna się wraz z montażem, nie w środę otwarcia. Daty nie są wkodowane w motyw. Żyją w runbooku, który przeżyje zmianę roku. Anuga 2027 jest już w kalendarzu jako przyszłe okno.

Sekretów nie ma w Git. Klucze, hasła bazy i tokeny CRM albo DAM idą przez zmienne środowiska albo poza repo. wp-config.php w historii Gita z hasłem to incydent, nie drobiazg na później. Konta administracyjne mają 2FA. Redaktorzy PL nie dostają install_plugins na produkcji. XML-RPC zostaje wyłączony, jeśli nie ma uzasadnionego klienta. Edytor plików panelu też.

WP-CLI jest narzędziem operacyjnym: flush transients, wp scaffold, import CPT, sprawdzanie autoload. Nie zastępuje testów. Tam, gdzie wtyczka liczy (daty, mapowanie, walidacja, status odcinka), idzie PHPUnit. Bloki z nietrywialnym UI dostają test w edytorze na stagingu, bo jsdom nie złapie, że InspectorControls zasłania przycisk Speichern w niemieckim locale.

Budżet wydajności sprawdzam w ramach odbioru prac. Lighthouse i Core Web Vitals na szablonach, które naprawdę istnieją: archiwum CPT stoisk, single odcinka, strona z wzorcem hero, locale EN. Obrazy w AVIF/WebP generowane w procesie budowania, CSS motywu bez ładowania wszystkich bloków, JS edytora nie trafia na front. Poster odcinka jako 4K PNG wrzucony do biblioteki mediów bez wariantów srcset psuje LCP niezależnie od CDN. Redis i obiektowy cache mają sens, gdy transjenty i zapytania CPT to pokazują, nie gdy „tak się robi przy Renie”.

#Meetup Köln przy Tunisstraße

WordPress Meetup Köln spotyka się na miejscu, zwykle w trzeci czwartek miesiąca o 18:00, w Design Offices Köln Dominium przy Tunisstraße 19-23, 50667 Köln, blisko Hauptbahnhof. Grupa ma własną stronę społeczności wpcgn.de i kalendarz na meetup.com/wordpress-meetup-koln. To nie jest kanał sprzedaży. To jest lokalny barometr: motywy i bloki, które łamią edytor, wychodzą na meetupie szybciej niż w tickecie z Riehl.

W 2026 roku program pokazał, czym żyje scena. 16 lipca Meetup #120 był stammtischem w Deutzer Brauhaus przy Ottoplatz 7. 16 września Meetup #121, Bastelabend / Werkstatt, wypadł w środę zamiast czwartku, znowu przy Tunisstraße, z wezwaniem: notebook i własne projekty. 15 sierpnia WordPress miał blok na FrOSCon 2026 w Sankt Augustin (Grantham-Allee 20), regionalnym zjeździe open source, do którego kolońska grupa odsyła z kalendarza. Zespół nie udaje organizatora. Zespół wie, że redakcje z Kolonii będą klikać nowe funkcje Core, w tym narzędzia AI w edytorze, i że motyw, który psuje InspectorControls albo wlewa dane z mediów do zewnętrznego API bez zgody, nie przeżyje takich pytań.

Szersza scena niemiecka w 2026 roku miała WordCamp Leipzig (9 maja) i WordCamp Mannheim (początek lipca). Wyjazd tam jest po temat, nie po wpisanie miasta do oferty. Dla briefu kolońskiego ważniejsze od WordCampu jest to, że lokalny meetup siedzi przy Tunisstraße: ludzie, którzy przychodzą na bloki, dostępność i WP-CLI, zadają inne pytania niż agencja z Rudolfplatz z prezentacją „nowy lookbook”. Motyw i wtyczki, które wychodzą z tego zespołu, muszą przeżyć takie pytania: skąd alt tekst, kto go akceptuje, czy prompt AI nie wylewa danych osobowych z biblioteki mediów, czy formalne Sie w stringach motywu nie rozjeżdża się z copy na stronie produktu.

#Sklep WooCommerce to osobny zakres

Ta strona nie buduje checkoutu, bramek ani katalogu produktów. Jeśli brief schodzi na sklep, VAT, SEPA albo etykiety DHL, zakres zmienia właściciela i opisuje go programista WooCommerce w Kolonii. Ogólna strona usługi: programista WooCommerce. Mieszanie sklepu z motywem korporacyjnym albo redakcyjnym w jednym repozytorium bez granicy wtyczek to najszybsza droga do tego, żeby aktualizacja Woo rozwaliła landing na gamescom, albo odwrotnie.

Korporacyjna strona z jednym przyciskiem „sklep” do zewnętrznego Woo może zostać w motywie jako link. Sama logika koszyka nie. Serwis produktowy ubezpieczyciela, który wygląda jak sklep, a jest wnioskiem, też nie jest Woo. To jest CPT, formularz i integracja, opisane w tym briefie albo w osobnym zapisie, nie w checkoutcie.

#Po wdrożeniu: przekazanie albo opieka

Zlecenie programistyczne kończy się dokumentacją, sesją przekazania i dostępem Git dla zespołu klienta. Runbook opisuje: jak dodać wzorzec, jak zarejestrować nowy CPT, jak wypuścić gałąź, jak odtworzyć środowisko testowe, kogo wołać gdy edytor nie zapisuje, które daty Koelnmesse blokują wydanie. Jeśli po starcie potrzebne są aktualizacje Core, monitoring, WAF i stały dyżur operatorski, to jest opieka techniczna WordPress w Kolonii, nie ukryty aneks do motywu. Szerszy opis produktu opieki, niezależny od miasta: utrzymanie stron WordPress.

Wycena prac programistycznych jest indywidualna i wychodzi na piśmie po ustaleniu zakresu. Na tej stronie nie ma cennika ani pakietów godzin. Zmiana zakresu (nagle FSE, nagle drugi język, nagle integracja z DAM albo z intranetem) wraca do zapisu, zanim wejdzie w sprint.

#Jak zacząć projekt w Kolonii?

Do rozmowy wystarczy krótki opis: jaki motyw i jakie wtyczki są dziś, kto redaguje (PL/DE), czy front ma być formalnym Sie, czy w grze jest CPT pod odcinki, produkty albo stoiska, czy IT po stronie Kolonii wymaga Git i stagingu od dnia zero, które daty Koelnmesse są w kalendarzu. Zespół ogląda instalację, spisuje ryzyka (Gutenberg używany jak notatnik, sekrety w repo, brak oświadczenia o dostępności, ACF zdublowane z blokami, landingi targowe kopiowane co rok, autoplay w hero bez prefers-reduced-motion) i proponuje plan z kryteriami odbioru.

Kontakt: formularz WPPoland. Pillar usługowy, bez miasta w slugach, zostaje przy programiście WordPress.

Mapa w Kolonii i okolic

Przewodniki metodyczne (SEO, GEO, compliance)

Te materiały opisują, jak pracujemy nad cytowaniami w modelach językowych, modernizacją WooCommerce B2B oraz odpornością operacyjną pod NIS2 i przetargi - niezależnie od miasta realizacji.

Zobacz też w innych miastach Niemiec

Co wyróżnia w Kolonii

Lokalna ekspertyza:

  • Seniorskie prace WordPress dla firm w Kolonii: dedykowane motywy, wzorce Gutenberg, CPT, ACF albo natywne atrybuty bloków oraz własne wtyczki
  • Kalendarz Koelnmesse (imm cologne, gamescom, Kind + Jugend, DMEXCO, ORGATEC) wpisany w Git jako okno zamrożenia wydań, nie jako ozdobnik w copy
  • WordPress Coding Standards, i18n DE/EN i dostępność (BITV 2.0, EN 301 549, BFSG) wpisane w proces realizacji, bez certyfikatu, którego nie było

Pracuję zdalnie dla firm w Kolonii.

Potrzebujesz usługi: Programista WordPress w Kolonii?

Opisz projekt mailem. Odpowiadam w ciągu 48 godzin.

Opisz projekt

FAQ - Programista WordPress w Kolonii

Gdzie w Kolonii spotyka się środowisko webowe?

Lokalny meetup to WordPress Meetup Köln, strona grupy: https://www.meetup.com/wordpress-meetup-koln/. Zapytaj tam, zanim podpiszesz cokolwiek, ze mną też. Sala ludzi, którzy już kogoś lokalnie zatrudnili, weryfikuje szybciej niż jakiekolwiek portfolio.

Jak wygląda przekazanie i dalsze utrzymanie?

Żyjąca dokumentacja dla redaktorów i programistów, ślad przegląd kodu na każdej gałęzi, pisemny zapis decyzji architektonicznych oraz sesja przekazania na koniec zlecenia. Projekt może następnie trafić do zespołu klienta albo na opcjonalną opiekę z tą samą dokumentacją. Stałe aktualizacje, WAF i kalendarz freeze operatorski opisuje osobna strona opieki w Kolonii, nie ten brief.

Jakie projekty WordPress podejmujecie w Kolonii?

Dedykowane motywy zgodne z WordPress Coding Standards, własne wtyczki, wzorce bloków Gutenberg, modele treści oparte na CPT plus ACF albo natywne atrybuty bloków, integracje REST oraz refaktoryzacje starszych motywów. Zakres trzyma się prac programistycznych WordPress. Jeśli inny stack faktycznie byłby lepszy, zespół zapisuje to na piśmie zamiast zmieniać temat strony. Sklep i stała opieka są osobnymi briefami.

Technologie i specjalizacje - w Kolonii

Wspominamy o:

WordPressSEOWydajność stron internetowych