Wspieramy społeczność WordPress w Genewie
Nie jesteśmy tylko zdalną agencją. Jesteśmy aktywną częścią ekosystemu. Wierzymy w Open Source i wnosimy wkład w społeczność, która napędza ponad 40% sieci (W3Techs).
Programista WordPress & WooCommerce w Genewie
W Genewie, 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.
Dla firm w Genewie obsługujących sektor Lokalne MŚP i firmy korporacyjne, bezpieczeństwo danych jest priorytetem. Architektura Headless wirtualnie eliminuje najczęstsze wektory ataków na WordPressa.
Strona fundacji przy Rue de Varembé, raport think-tanku przy Place des Nations albo serwis biura doradczego przy Quai du Mont-Blanc to nie powód, żeby WordPress udawał system ONZ albo platformę transakcyjną banku. To powód, żeby motyw blokowy, wzorce Gutenberg, CPT i wtyczki były napisane tak, jak oczekuje genewski dział prawny, redakcja wielojęzyczna i polski programista, który publikuje z Warszawy, a panel ma po francusku z formalnym « vous ».
WPPoland buduje ten WordPress z polskiego zespołu seniorów dla firm, fundacji i organizacji, które mają siedzibę, oddział albo donorów Genewie. Zakres to programowanie WordPress: motyw blokowy albo klasyczny, własne wtyczki, Gutenberg, CPT, ACF albo natywne bloki, integracje REST i przegląd kodu na Git. Sklep WooCommerce i abonament opieki są osobnymi tematami, z linkami na końcu.
Programowanie WordPress w Genewie
Genewa to nie tylko jezioro i zegarki. To najgęstszy węzeł organizacji międzynarodowych na świecie: Palais des Nations, siedziby WTO, WHO, CICR, dziesiątki agencji specjalistycznych ONZ i setki NGO z biurami w Canton de Genève. Obok tego stoi Geneva Financial Centre: private banking, wealth management, family office i doradztwo regulacyjne w promieniu kilku przystanków tramwaju od Rive. Geneva Digital Hub przy Rue du Stand 5 dokłada startupy i scale-upy, które budują produkt cyfrowy, ale nadal potrzebują strony, która przeżyje audyt compliance.
Dla WordPressa te fakty oznaczają trzy twarde wymagania, które szablon z ThemeForest nie spełni. Po pierwsze wielojęzyczność: FR-CH i EN to minimum, często DE-CH albo dodatkowe locale dla donorów i partnerów. Po drugie rejestr: francuski interfejs używa formalnego « vous », nie « tu »; niemiecki wariant, jeśli istnieje, idzie w « Sie », nie w ty. Po trzecie zgodność: revFADP / nDSG obowiązuje od 1 września 2023, a sektor finansowy słucha wytycznych FINMA dotyczących cyberbezpieczeństwa i ryzyka stron trzecich. Strona marketingowa zwykle nie jest systemem pod nadzorem FINMA, ale podpięty portal donorski albo formularz wniosku już tak.
Typowy brief, który trafia do seniorów, nie brzmi „zróbcie ładną stronę”. Brzmi: odziedziczony motyw z page builderem, redakcja w Polsce i w Genewie, trzy języki na froncie, Gutenberg używany jak klasyczny edytor, a nowa publikacja pod konferencję ONZ powstaje przez kopiowanie strony z zeszłego roku i ręczne podmienianie PDF-a. To jest problem modelu treści i procesu Git, nie problem szablonu.
Motyw blokowy, motyw klasyczny i własna wtyczka
Nowa budowa w Genewie 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 trzyma tokeny: paletę, skalę typografii, odstępy, szerokości treści. Dla genewskiego B2B i NGO oznacza to stonowaną paletę, czytelny krój bez ozdobników i przyciski, które nie pękają na francuskich złożeniach w stylu Déclaration d’accessibilité albo Politique de confidentialité. Wzorce bloków opisują powtarzalne układy: hero z zastrzeżeniem prawnym, siatka ekspertów, blok cytatu z atrybucją, karta wydarzenia z datą i locale, stopka z mentions légales. Redaktor składa landing konferencyjny albo stronę raportu z wzorców, zamiast prosić programistę o nowy szablon na każde posiedzenie Rady.
Pełna edycja witryny (FSE) ma sens, gdy zespół redakcyjny naprawdę ma dostać kontrolę nad nagłówkiem i stopką. W praktyce wiele fundacji i instytucji finansowych tej kontroli nie chce: nagłówek jest elementem brandu i compliance, a nie placem zabaw. Wtedy motyw blokowy zostaje, ale szablony części (header, footer) są zablokowane, a redakcja pracuje w obrębie wzorców i własnych bloków. To kompromis, nie półśrodek.
Każdy własny blok dostaje block.json, kategorię, ikonę i atrybuty ze schematem. Tam, gdzie treść ma trafić do wyszukiwarki i do RSS, render idzie po stronie serwera. React w edytorze służy do InspectorControls i podglądu, nie do tego, żeby front był aplikacją SPA udającą WordPressa. Handbook na developer.wordpress.org jest źródłem kontraktu API, nie slajdem ze szkolenia.
Kiedy klasyczny motyw PHP zostaje
Odziedziczone instalacje w Genewie 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żde wydanie raportu rocznego. Przepisanie tego na FSE „bo tak wypada w 2026” jest droższe niż naprawa hierarchii szablonów, wyciągnięcie logiki do wtyczki i dokładanie Gutenberg tylko tam, gdzie redakcja naprawdę składa nowe landingi.
Klasyczny motyw zostaje, gdy:
- logika warunkowa siedzi w szablonach (inne menu dla darczyńcy, inne dla dziennikarza, inne dla partnera instytucjonalnego) i przeniesienie jej do
theme.jsonnic 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 publikacji, kolejka do CRM donorskiego, endpoint REST dla intranetu, rola „redaktor PL” bez publish_pages na produkcji francuskiej: to wtyczka. Kolory, siatka, wzorzec hero: to motyw. Jeśli po zmianie motywu znika archiwum raportów albo lista ekspertó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 systemu donorskiego, walidacja formularza zgłoszeniowego). Logika biznesowa nie trafia do functions.php motywu, bo functions.php umiera razem z motywem, a genewska fundacja zmienia agencję brandingową częściej niż model treści.
Porównanie warstw przy kickoffie:
| Warstwa | Co tam żyje | Przykład w Genewie |
|---|---|---|
| Motyw | prezentacja, tokeny, wzorce | landing na konferencję, stopka z mentions légales |
| Wtyczka | CPT, role, REST, integracje | raport, wydarzenie, ekspert, logi audytowe |
| Gutenberg | redakcja bez HTML | wzorzec publikacji, blok osoby, karta programu |
| środowisko testowe i Git | proces, nie feature | gałąź, review, promocja na produkcję |
Gutenberg, CPT i wielojęzyczność pod UN, NGO i finanse
Gutenberg bez modelu treści kończy się tym, że każda podstrona jest unikalnym kolażem bloków i nikt nie potrafi zrobić listy. W Genewie listy są konkretne: publikacje, raporty, wydarzenia, eksperci, stanowiska, partnerzy, programy donorskie, komunikaty prasowe. To są obiekty, nie „kolejne strony w drzewie”.
Własne typy treści zamiast kopiowanych landingów
CPT rejestrujemy z własnymi capabilities, nie z mapowaniem na post. Redaktor w Polsce ma edytować kartę eksperta albo wpis wydarzenia, a nie kasować wtyczek. Archiwum CPT dostaje szablon albo wzorzec zapytań. Pojedynczy obiekt ma szablon, który nie pozwala rozpychać layoutu poza ustalony układ. Taksonomie są osobne: typ wydarzenia (konferencja, briefing, webinaire) nie miesza się z tagami bloga. Temat polityki (klimat, zdrowie, handel) nie miesza się z taksonomią produktową doradcy finansowego.
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 publikacji, numer raportu, język oryginału, plik PDF, flaga „embargo”, identyfikator partnera. Layout strony eksperta albo artykułu składa Gutenberg. Mieszanie ACF Flexible Content z pełnym edytorem bloków na tym samym obiekcie kończy się dwoma źródłami prawdy i redaktorem, który nie wie, gdzie kliknąć.
Gdzie ACF jest zbędne, atrybuty bloku w block.json wystarczą. Blok „ekspert z cytatem” nie potrzebuje 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 francuskimi wtyczkami consent i cache.
Landing konferencyjny jako kopia strony z zeszłego roku jest długiem, który wychodzi w październiku, gdy Rada zbiera się w Genewie. Obiekt CPT z polami roku, sali i locale przeżywa następną edycję bez kopiowania drzewa. Szablon czyta obiekt. Redaktor zmienia datę, nie HTML.
WPML, Polylang i hreflang, który nie pęka
Stack wielojęzyczny dobiera się do liczby języków i procesu redakcyjnego, nie do preferencji programisty:
| Liczba języków | Stack | Workflow |
|---|---|---|
| 2 (FR-CH plus EN) | Polylang | tłumaczenie ręczne, redaktor per język |
| 3-4 (FR-CH, EN, DE-CH, opcjonalnie ES) | WPML plus String Translation | redaktor per język, wspólna pamięć |
| 4 plus drafty maszynowe | WPML plus konektor tłumaczeniowy | draft maszynowy, recenzja człowieka przed publikacją |
FR-CH to nie FR-FR. Szwajcarski francuski używa innych terminów administracyjnych, innej pisowni niektórych słów i innego rejestru urzędowego. Pipeline, który daje na wyjściu paryski francuski, brzmi obco przy Place des Nations, nawet przy poprawnej gramatyce. DE-CH, jeśli wchodzi, to nie DE-DE: brak eszett (ß), Helwetyzmy (Tram, Velo, parkieren) i odniesienie do Schweizer Duden, nie do Mannheim.
Minimalna konfiguracja hreflang dla CH:
fr-CH,en(alboen-CH), opcjonalniede-CHx-defaultwskazujący na switcher albo FR-CH- linki zwrotne na każdej wersji językowej
- adnotacje
xhtml:linkw sitemapie jako warstwa nadmiarowa
Polylang i WPML emitują hreflang poprawnie, gdy są dobrze skonfigurowane. Pęknięcie prawie zawsze siedzi w custom code, który zdziera adnotacje z <head> na cache’owanych stronach, albo w regułach CDN wariujących po cookie zamiast po URL-u.
Rejestr francuski « vous » i niemiecki « Sie » w ciągach motywu
Najczęstsze tarcie we współpracy Polska - Genewa nie jest w PHP. Jest w rejestrze. Francuski UI strony fundacji używa formalnego « vous ». Polski redaktor, który tłumaczy z headlinera napisanego u siebie na „ty”, publikuje tekst, który przy Jet d’eau brzmi jak newsletter siłowni. To jest brief językowy i lista ciągów motywie, nie wtyczka.
Zasady, które wpisujemy w dokumentację motywu:
- Ciągi interfejsu (przyciski, błędy formularza,
aria-label, placeholder) są po francusku z « vous », jeśli front jest FR-CH. Angielski wariant, jeśli jest, też jest formalny. Polski wariant, jeśli powstaje, nie kopiuje « vous » jeden do jednego, tylko naturalny polski rejestr instytucjonalny. - Niemiecki wariant, jeśli istnieje, używa « Sie », nie « du ». Przykład w dokumentacji: „Bitte geben Sie Ihre E-Mail-Adresse ein”, nie „Gib deine E-Mail ein”.
- Redaktorzy w Polsce dostają locale panelu, w którym potrafią pracować. To nie musi być ten sam język co front.
- Mentions légales, politique de confidentialité i déclaration d’accessibilité są szablonami z polami, nie blokami, które redaktor może usunąć z drzewa. Wersja EN dostaje własne pola, nie maszynowy przekład francuskiego tekstu prawnego.
Polylang i WPML rozwiązują hreflang i kopie językowe. Nie rozwiązują procesu: kto akceptuje francuski tekst, zanim pójdzie na produkcję. W briefie zapisujemy, czy akceptacja leży po stronie klienta w Genewie, po stronie redakcji fundacji, czy po stronie polskiego content leada. środowisko testowe pokazuje locale obok siebie, bo regresja „FR się zepsuło, bo ktoś edytował EN” wychodzi dopiero na porównaniu.
Dla NGO i think-tanków dochodzi glosariusz. Nazwy programów, inicjatyw donorskich 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ść: WCAG 2.2, EN 301 549 i genewski kontekst publiczny
Dostępność w Genewie nie jest jednym przepisem. Organizacje międzynarodowe i instytucje publiczne w Canton de Genève odwołują się do EN 301 549 i WCAG 2.1 AA jako warstwy web (na sierpień 2026 WCAG 2.2 jest punktem odniesienia dla nowych audytów). Sektor prywatny, zwłaszcza finansowy z formularzem wniosku albo portalem donorskim, traktuje dostępność jako ryzyko reputacyjne i operacyjne, nawet gdy nie ma tego samego reżimu co urząd.
Zespół nie sprzedaje certyfikatu, którego nie było. Skan axe w CI jest bramką, nie dowodem zgodności. Jeśli audytu zewnętrznego nie było, w ofercie nie ma pieczątki.
Co konkretnie robi zespół w kodzie:
- Semantyka: jeden
h1, kolejność nagłówków, przycisk jakobutton, link jakoa, niedivz kliknięciem. - Klawiatura i focus: omijanie powtarzalnej nawigacji, widoczny focus, brak pułapek w mega menu i w modalu zapisu na briefing albo newsletter programu.
- Kontrast i ruch: tokeny w
theme.json, szacunek dlaprefers-reduced-motion, brak informacji niesionej samym kolorem. Autoplay w hero raportu 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. Raport bez opisu wykresu albo bez podpisu nie przechodzi odbioru, jeśli brief mówi o dostępności.
- PDF: jeśli raport roczny, warunki albo regulamin idzie jako załącznik, klauzula dokumentów poza WWW trafia do briefu. WordPress nie zrobi z JPG-a dostępnego PDF-a.
Konferencja przy Place des Nations to lokalny barometr. Landing organizacji, który w tygodniu posiedzenia ma niedziałający focus albo formularz bez etykiet, jest błędem produktowym, nie „ticketem UX na po konferencji”. Dla developmentu wynika z tego twardy odbiór: skan axe w CI plus ręczna ścieżka klawiatury na wzorcu publikacji, zanim tag wejdzie na produkcję.
revFADP, FINMA i hosting w Szwajcarii
Zrewidowana ustawa o ochronie danych (revFADP / nDSG) weszła w życie 1 września 2023. Jest oparta na RODO, ale nie identyczna: surowsza przy zgodzie na profilowanie, lżejsza przy progach dokumentacyjnych dla MŚP, jasna co do eksportu danych poza EOG. Dla WordPressa oznacza to: udokumentowaną politykę prywatności w każdej wersji językowej, przepływ zgody na cookies z domyślnym „odrzuć”, rejestr czynności przetwarzania oraz jasność co do podprocesorów (analityka, mailing, CDN) poza Szwajcarią.
Dla sektora finansowego w Genewie dochodzą wytyczne FINMA dotyczące cyberbezpieczeństwa: zgłaszanie incydentów, ryzyko stron trzecich, odporność operacyjna. Sama strona informacyjna biura doradczego zwykle nie musi tego spełniać bezpośrednio, ale portal z formularzem wniosku albo strefa klienta już tak. Sygnalizujemy to pierwszego dnia, nie dopiero przy uruchomieniu.
Hosting w CH ma sens dla genewskich klientów, którzy chcą suwerenności danych. Infomaniak (siedziba w Genewie) jest częstym wyborem przy zielonej energii i hostingu w szwajcarskich centrach danych. Hostpoint, Cyon i Metanet pokrywają pozostałe profile: MŚP, regulowane wdrożenia z dokumentacją ISO 27001. Edge przez Cloudflare albo Fastly z origin w CH to typowy kompromis między wydajnością a rezydencją.
Sekretów nie ma w Git. Klucze, hasła bazy i tokeny CRM albo systemu donorskiego 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.
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 Genewie zapyta o to na drugim spotkaniu, szczególnie gdy compliance fundacji albo dział prawny banku 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 senior, który nie pisał tej gałęzi. 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 jest po angielsku albo po polsku, zależnie od recenzenta po stronie klienta. Genewski dział IT zwykle woli francuski w dokumentacji redakcyjnej i angielski w diffie.
Środowisko testowe jest kopią produkcji z zanonimizowanymi danymi. WP-CLI search-replace na URL, osobne klucze, wyłączone crony, które wysyłają maile do prawdziwych donorów albo do bazy dziennikarzy. Redakcja klika po stagingu z prawdziwymi wzorcami Gutenberg, nie po localhoście programisty. Regresja wielojęzyczna (FR-CH/EN/DE-CH), 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).
Zamrożenie wydania przy dużych konferencjach ONZ albo publikacji raportu rocznego jest decyzją developerską, nie tylko operatorską. W oknie posiedzenia Rady, szczytu klimatycznego albo premiery raportu 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.
Budżet wydajności jest częścią odbioru, nie osobnym projektem. Lighthouse i Core Web Vitals na szablonach, które naprawdę istnieją: archiwum CPT publikacji, single raportu, strona z wzorcem hero, locale EN. Obrazy w AVIF/WebP przez proces budowania, CSS motywu bez importu całego uniwersum bloków, JS edytora nie na froncie. Redis i obiektowy cache mają sens, gdy transjenty i zapytania CPT to pokazują, nie gdy „tak się robi przy Lac Léman”.
Sklep WooCommerce to osobny zakres
Ta strona nie buduje checkoutu, bramek ani katalogu produktów. Jeśli brief schodzi na sklep, TWINT, Swiss QR-Rechnung albo stawki MWST, zakres zmienia właściciela i opisuje go programista WooCommerce w Genewie. Pillar bez miasta: programista WooCommerce. Mieszanie sklepu z motywem fundacji albo serwisem doradczym w jednym repozytorium bez granicy wtyczek to najszybsza droga do tego, żeby aktualizacja Woo rozwaliła landing pod konferencję, albo odwrotnie.
Korporacyjna strona z jednym przyciskiem „boutique” do zewnętrznego Woo może zostać w motywie jako link. Sama logika koszyka nie. Portal donorski, który wygląda jak sklep, a jest formularzem darowizny, też nie jest Woo. To jest CPT, formularz i integracja, opisane w tym briefie.
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 konferencyjne blokują wydanie. Jeśli po starcie potrzebne są aktualizacje Core, monitoring, WAF i stały dyżur operatorski, to jest opieka techniczna WordPress w Genewie, nie ukryty aneks do motywu.
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 drugi język, nagle integracja z systemem donorskim albo z intranetem) wraca do zapisu, zanim wejdzie w sprint.
Jak zacząć projekt w Genewie
Do rozmowy wystarczy krótki opis: jaki motyw i jakie wtyczki są dziś, kto redaguje (PL/FR/EN), czy front ma być formalnym « vous », czy w grze jest CPT pod publikacje, raporty albo wydarzenia, czy IT po stronie Genewy wymaga Git i stagingu od dnia zero, które daty konferencyjne są w kalendarzu. Zespół ogląda instalację, spisuje ryzyka (Gutenberg używany jak notatnik, sekrety w repo, brak déclaration d’accessibilité, ACF zdublowane z blokami, landingi 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 Genewie i okolic
Obsługujemy klientów w Genewie i pobliskich miejscowościach.
Ta strona zawiera informacje przygotowane specjalnie dla Genewa.
Strona fundacji przy Rue de Varembé, raport think-tanku przy Place des Nations albo serwis biura doradczego przy Quai du Mont-Blanc to nie powód, żeby WordPress udawał system ONZ albo platformę transakcyjną banku. To powód, żeby motyw blokowy, wzorce Gutenberg, CPT i wtyczki były napisane tak, jak oczekuje genewski dział prawny, redakcja wielojęzyczna i polski programista, który publikuje z Warszawy, a panel ma po francusku z formalnym « vous ».
WPPoland buduje ten WordPress z polskiego zespołu seniorów dla firm, fundacji i organizacji, które mają siedzibę, oddział albo donorów Genewie. Zakres to programowanie WordPress: motyw blokowy albo klasyczny, własne wtyczki, Gutenberg, CPT, ACF albo natywne bloki, integracje REST i przegląd kodu na Git. Sklep WooCommerce i abonament opieki są osobnymi tematami, z linkami na końcu.
Programowanie WordPress w Genewie
Genewa to nie tylko jezioro i zegarki. To najgęstszy węzeł organizacji międzynarodowych na świecie: Palais des Nations, siedziby WTO, WHO, CICR, dziesiątki agencji specjalistycznych ONZ i setki NGO z biurami w Canton de Genève. Obok tego stoi Geneva Financial Centre: private banking, wealth management, family office i doradztwo regulacyjne w promieniu kilku przystanków tramwaju od Rive. Geneva Digital Hub przy Rue du Stand 5 dokłada startupy i scale-upy, które budują produkt cyfrowy, ale nadal potrzebują strony, która przeżyje audyt compliance.
Dla WordPressa te fakty oznaczają trzy twarde wymagania, które szablon z ThemeForest nie spełni. Po pierwsze wielojęzyczność: FR-CH i EN to minimum, często DE-CH albo dodatkowe locale dla donorów i partnerów. Po drugie rejestr: francuski interfejs używa formalnego « vous », nie « tu »; niemiecki wariant, jeśli istnieje, idzie w « Sie », nie w ty. Po trzecie zgodność: revFADP / nDSG obowiązuje od 1 września 2023, a sektor finansowy słucha wytycznych FINMA dotyczących cyberbezpieczeństwa i ryzyka stron trzecich. Strona marketingowa zwykle nie jest systemem pod nadzorem FINMA, ale podpięty portal donorski albo formularz wniosku już tak.
Typowy brief, który trafia do seniorów, nie brzmi „zróbcie ładną stronę”. Brzmi: odziedziczony motyw z page builderem, redakcja w Polsce i w Genewie, trzy języki na froncie, Gutenberg używany jak klasyczny edytor, a nowa publikacja pod konferencję ONZ powstaje przez kopiowanie strony z zeszłego roku i ręczne podmienianie PDF-a. To jest problem modelu treści i procesu Git, nie problem szablonu.
Motyw blokowy, motyw klasyczny i własna wtyczka
Nowa budowa w Genewie 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 trzyma tokeny: paletę, skalę typografii, odstępy, szerokości treści. Dla genewskiego B2B i NGO oznacza to stonowaną paletę, czytelny krój bez ozdobników i przyciski, które nie pękają na francuskich złożeniach w stylu Déclaration d’accessibilité albo Politique de confidentialité. Wzorce bloków opisują powtarzalne układy: hero z zastrzeżeniem prawnym, siatka ekspertów, blok cytatu z atrybucją, karta wydarzenia z datą i locale, stopka z mentions légales. Redaktor składa landing konferencyjny albo stronę raportu z wzorców, zamiast prosić programistę o nowy szablon na każde posiedzenie Rady.
Pełna edycja witryny (FSE) ma sens, gdy zespół redakcyjny naprawdę ma dostać kontrolę nad nagłówkiem i stopką. W praktyce wiele fundacji i instytucji finansowych tej kontroli nie chce: nagłówek jest elementem brandu i compliance, a nie placem zabaw. Wtedy motyw blokowy zostaje, ale szablony części (header, footer) są zablokowane, a redakcja pracuje w obrębie wzorców i własnych bloków. To kompromis, nie półśrodek.
Każdy własny blok dostaje block.json, kategorię, ikonę i atrybuty ze schematem. Tam, gdzie treść ma trafić do wyszukiwarki i do RSS, render idzie po stronie serwera. React w edytorze służy do InspectorControls i podglądu, nie do tego, żeby front był aplikacją SPA udającą WordPressa. Handbook na developer.wordpress.org jest źródłem kontraktu API, nie slajdem ze szkolenia.
Kiedy klasyczny motyw PHP zostaje
Odziedziczone instalacje w Genewie 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żde wydanie raportu rocznego. Przepisanie tego na FSE „bo tak wypada w 2026” jest droższe niż naprawa hierarchii szablonów, wyciągnięcie logiki do wtyczki i dokładanie Gutenberg tylko tam, gdzie redakcja naprawdę składa nowe landingi.
Klasyczny motyw zostaje, gdy:
- logika warunkowa siedzi w szablonach (inne menu dla darczyńcy, inne dla dziennikarza, inne dla partnera instytucjonalnego) i przeniesienie jej do
theme.jsonnic 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 publikacji, kolejka do CRM donorskiego, endpoint REST dla intranetu, rola „redaktor PL” bez publish_pages na produkcji francuskiej: to wtyczka. Kolory, siatka, wzorzec hero: to motyw. Jeśli po zmianie motywu znika archiwum raportów albo lista ekspertó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 systemu donorskiego, walidacja formularza zgłoszeniowego). Logika biznesowa nie trafia do functions.php motywu, bo functions.php umiera razem z motywem, a genewska fundacja zmienia agencję brandingową częściej niż model treści.
Porównanie warstw przy kickoffie:
| Warstwa | Co tam żyje | Przykład w Genewie |
|---|---|---|
| Motyw | prezentacja, tokeny, wzorce | landing na konferencję, stopka z mentions légales |
| Wtyczka | CPT, role, REST, integracje | raport, wydarzenie, ekspert, logi audytowe |
| Gutenberg | redakcja bez HTML | wzorzec publikacji, blok osoby, karta programu |
| środowisko testowe i Git | proces, nie feature | gałąź, review, promocja na produkcję |
Gutenberg, CPT i wielojęzyczność pod UN, NGO i finanse
Gutenberg bez modelu treści kończy się tym, że każda podstrona jest unikalnym kolażem bloków i nikt nie potrafi zrobić listy. W Genewie listy są konkretne: publikacje, raporty, wydarzenia, eksperci, stanowiska, partnerzy, programy donorskie, komunikaty prasowe. To są obiekty, nie „kolejne strony w drzewie”.
Własne typy treści zamiast kopiowanych landingów
CPT rejestrujemy z własnymi capabilities, nie z mapowaniem na post. Redaktor w Polsce ma edytować kartę eksperta albo wpis wydarzenia, a nie kasować wtyczek. Archiwum CPT dostaje szablon albo wzorzec zapytań. Pojedynczy obiekt ma szablon, który nie pozwala rozpychać layoutu poza ustalony układ. Taksonomie są osobne: typ wydarzenia (konferencja, briefing, webinaire) nie miesza się z tagami bloga. Temat polityki (klimat, zdrowie, handel) nie miesza się z taksonomią produktową doradcy finansowego.
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 publikacji, numer raportu, język oryginału, plik PDF, flaga „embargo”, identyfikator partnera. Layout strony eksperta albo artykułu składa Gutenberg. Mieszanie ACF Flexible Content z pełnym edytorem bloków na tym samym obiekcie kończy się dwoma źródłami prawdy i redaktorem, który nie wie, gdzie kliknąć.
Gdzie ACF jest zbędne, atrybuty bloku w block.json wystarczą. Blok „ekspert z cytatem” nie potrzebuje 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 francuskimi wtyczkami consent i cache.
Landing konferencyjny jako kopia strony z zeszłego roku jest długiem, który wychodzi w październiku, gdy Rada zbiera się w Genewie. Obiekt CPT z polami roku, sali i locale przeżywa następną edycję bez kopiowania drzewa. Szablon czyta obiekt. Redaktor zmienia datę, nie HTML.
WPML, Polylang i hreflang, który nie pęka
Stack wielojęzyczny dobiera się do liczby języków i procesu redakcyjnego, nie do preferencji programisty:
| Liczba języków | Stack | Workflow |
|---|---|---|
| 2 (FR-CH plus EN) | Polylang | tłumaczenie ręczne, redaktor per język |
| 3-4 (FR-CH, EN, DE-CH, opcjonalnie ES) | WPML plus String Translation | redaktor per język, wspólna pamięć |
| 4 plus drafty maszynowe | WPML plus konektor tłumaczeniowy | draft maszynowy, recenzja człowieka przed publikacją |
FR-CH to nie FR-FR. Szwajcarski francuski używa innych terminów administracyjnych, innej pisowni niektórych słów i innego rejestru urzędowego. Pipeline, który daje na wyjściu paryski francuski, brzmi obco przy Place des Nations, nawet przy poprawnej gramatyce. DE-CH, jeśli wchodzi, to nie DE-DE: brak eszett (ß), Helwetyzmy (Tram, Velo, parkieren) i odniesienie do Schweizer Duden, nie do Mannheim.
Minimalna konfiguracja hreflang dla CH:
fr-CH,en(alboen-CH), opcjonalniede-CHx-defaultwskazujący na switcher albo FR-CH- linki zwrotne na każdej wersji językowej
- adnotacje
xhtml:linkw sitemapie jako warstwa nadmiarowa
Polylang i WPML emitują hreflang poprawnie, gdy są dobrze skonfigurowane. Pęknięcie prawie zawsze siedzi w custom code, który zdziera adnotacje z <head> na cache’owanych stronach, albo w regułach CDN wariujących po cookie zamiast po URL-u.
Rejestr francuski « vous » i niemiecki « Sie » w ciągach motywu
Najczęstsze tarcie we współpracy Polska - Genewa nie jest w PHP. Jest w rejestrze. Francuski UI strony fundacji używa formalnego « vous ». Polski redaktor, który tłumaczy z headlinera napisanego u siebie na „ty”, publikuje tekst, który przy Jet d’eau brzmi jak newsletter siłowni. To jest brief językowy i lista ciągów motywie, nie wtyczka.
Zasady, które wpisujemy w dokumentację motywu:
- Ciągi interfejsu (przyciski, błędy formularza,
aria-label, placeholder) są po francusku z « vous », jeśli front jest FR-CH. Angielski wariant, jeśli jest, też jest formalny. Polski wariant, jeśli powstaje, nie kopiuje « vous » jeden do jednego, tylko naturalny polski rejestr instytucjonalny. - Niemiecki wariant, jeśli istnieje, używa « Sie », nie « du ». Przykład w dokumentacji: „Bitte geben Sie Ihre E-Mail-Adresse ein”, nie „Gib deine E-Mail ein”.
- Redaktorzy w Polsce dostają locale panelu, w którym potrafią pracować. To nie musi być ten sam język co front.
- Mentions légales, politique de confidentialité i déclaration d’accessibilité są szablonami z polami, nie blokami, które redaktor może usunąć z drzewa. Wersja EN dostaje własne pola, nie maszynowy przekład francuskiego tekstu prawnego.
Polylang i WPML rozwiązują hreflang i kopie językowe. Nie rozwiązują procesu: kto akceptuje francuski tekst, zanim pójdzie na produkcję. W briefie zapisujemy, czy akceptacja leży po stronie klienta w Genewie, po stronie redakcji fundacji, czy po stronie polskiego content leada. środowisko testowe pokazuje locale obok siebie, bo regresja „FR się zepsuło, bo ktoś edytował EN” wychodzi dopiero na porównaniu.
Dla NGO i think-tanków dochodzi glosariusz. Nazwy programów, inicjatyw donorskich 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ść: WCAG 2.2, EN 301 549 i genewski kontekst publiczny
Dostępność w Genewie nie jest jednym przepisem. Organizacje międzynarodowe i instytucje publiczne w Canton de Genève odwołują się do EN 301 549 i WCAG 2.1 AA jako warstwy web (na sierpień 2026 WCAG 2.2 jest punktem odniesienia dla nowych audytów). Sektor prywatny, zwłaszcza finansowy z formularzem wniosku albo portalem donorskim, traktuje dostępność jako ryzyko reputacyjne i operacyjne, nawet gdy nie ma tego samego reżimu co urząd.
Zespół nie sprzedaje certyfikatu, którego nie było. Skan axe w CI jest bramką, nie dowodem zgodności. Jeśli audytu zewnętrznego nie było, w ofercie nie ma pieczątki.
Co konkretnie robi zespół w kodzie:
- Semantyka: jeden
h1, kolejność nagłówków, przycisk jakobutton, link jakoa, niedivz kliknięciem. - Klawiatura i focus: omijanie powtarzalnej nawigacji, widoczny focus, brak pułapek w mega menu i w modalu zapisu na briefing albo newsletter programu.
- Kontrast i ruch: tokeny w
theme.json, szacunek dlaprefers-reduced-motion, brak informacji niesionej samym kolorem. Autoplay w hero raportu 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. Raport bez opisu wykresu albo bez podpisu nie przechodzi odbioru, jeśli brief mówi o dostępności.
- PDF: jeśli raport roczny, warunki albo regulamin idzie jako załącznik, klauzula dokumentów poza WWW trafia do briefu. WordPress nie zrobi z JPG-a dostępnego PDF-a.
Konferencja przy Place des Nations to lokalny barometr. Landing organizacji, który w tygodniu posiedzenia ma niedziałający focus albo formularz bez etykiet, jest błędem produktowym, nie „ticketem UX na po konferencji”. Dla developmentu wynika z tego twardy odbiór: skan axe w CI plus ręczna ścieżka klawiatury na wzorcu publikacji, zanim tag wejdzie na produkcję.
revFADP, FINMA i hosting w Szwajcarii
Zrewidowana ustawa o ochronie danych (revFADP / nDSG) weszła w życie 1 września 2023. Jest oparta na RODO, ale nie identyczna: surowsza przy zgodzie na profilowanie, lżejsza przy progach dokumentacyjnych dla MŚP, jasna co do eksportu danych poza EOG. Dla WordPressa oznacza to: udokumentowaną politykę prywatności w każdej wersji językowej, przepływ zgody na cookies z domyślnym „odrzuć”, rejestr czynności przetwarzania oraz jasność co do podprocesorów (analityka, mailing, CDN) poza Szwajcarią.
Dla sektora finansowego w Genewie dochodzą wytyczne FINMA dotyczące cyberbezpieczeństwa: zgłaszanie incydentów, ryzyko stron trzecich, odporność operacyjna. Sama strona informacyjna biura doradczego zwykle nie musi tego spełniać bezpośrednio, ale portal z formularzem wniosku albo strefa klienta już tak. Sygnalizujemy to pierwszego dnia, nie dopiero przy uruchomieniu.
Hosting w CH ma sens dla genewskich klientów, którzy chcą suwerenności danych. Infomaniak (siedziba w Genewie) jest częstym wyborem przy zielonej energii i hostingu w szwajcarskich centrach danych. Hostpoint, Cyon i Metanet pokrywają pozostałe profile: MŚP, regulowane wdrożenia z dokumentacją ISO 27001. Edge przez Cloudflare albo Fastly z origin w CH to typowy kompromis między wydajnością a rezydencją.
Sekretów nie ma w Git. Klucze, hasła bazy i tokeny CRM albo systemu donorskiego 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.
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 Genewie zapyta o to na drugim spotkaniu, szczególnie gdy compliance fundacji albo dział prawny banku 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 senior, który nie pisał tej gałęzi. 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 jest po angielsku albo po polsku, zależnie od recenzenta po stronie klienta. Genewski dział IT zwykle woli francuski w dokumentacji redakcyjnej i angielski w diffie.
Środowisko testowe jest kopią produkcji z zanonimizowanymi danymi. WP-CLI search-replace na URL, osobne klucze, wyłączone crony, które wysyłają maile do prawdziwych donorów albo do bazy dziennikarzy. Redakcja klika po stagingu z prawdziwymi wzorcami Gutenberg, nie po localhoście programisty. Regresja wielojęzyczna (FR-CH/EN/DE-CH), 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).
Zamrożenie wydania przy dużych konferencjach ONZ albo publikacji raportu rocznego jest decyzją developerską, nie tylko operatorską. W oknie posiedzenia Rady, szczytu klimatycznego albo premiery raportu 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.
Budżet wydajności jest częścią odbioru, nie osobnym projektem. Lighthouse i Core Web Vitals na szablonach, które naprawdę istnieją: archiwum CPT publikacji, single raportu, strona z wzorcem hero, locale EN. Obrazy w AVIF/WebP przez proces budowania, CSS motywu bez importu całego uniwersum bloków, JS edytora nie na froncie. Redis i obiektowy cache mają sens, gdy transjenty i zapytania CPT to pokazują, nie gdy „tak się robi przy Lac Léman”.
Sklep WooCommerce to osobny zakres
Ta strona nie buduje checkoutu, bramek ani katalogu produktów. Jeśli brief schodzi na sklep, TWINT, Swiss QR-Rechnung albo stawki MWST, zakres zmienia właściciela i opisuje go programista WooCommerce w Genewie. Pillar bez miasta: programista WooCommerce. Mieszanie sklepu z motywem fundacji albo serwisem doradczym w jednym repozytorium bez granicy wtyczek to najszybsza droga do tego, żeby aktualizacja Woo rozwaliła landing pod konferencję, albo odwrotnie.
Korporacyjna strona z jednym przyciskiem „boutique” do zewnętrznego Woo może zostać w motywie jako link. Sama logika koszyka nie. Portal donorski, który wygląda jak sklep, a jest formularzem darowizny, też nie jest Woo. To jest CPT, formularz i integracja, opisane w tym briefie.
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 konferencyjne blokują wydanie. Jeśli po starcie potrzebne są aktualizacje Core, monitoring, WAF i stały dyżur operatorski, to jest opieka techniczna WordPress w Genewie, nie ukryty aneks do motywu.
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 drugi język, nagle integracja z systemem donorskim albo z intranetem) wraca do zapisu, zanim wejdzie w sprint.
Jak zacząć projekt w Genewie
Do rozmowy wystarczy krótki opis: jaki motyw i jakie wtyczki są dziś, kto redaguje (PL/FR/EN), czy front ma być formalnym « vous », czy w grze jest CPT pod publikacje, raporty albo wydarzenia, czy IT po stronie Genewy wymaga Git i stagingu od dnia zero, które daty konferencyjne są w kalendarzu. Zespół ogląda instalację, spisuje ryzyka (Gutenberg używany jak notatnik, sekrety w repo, brak déclaration d’accessibilité, ACF zdublowane z blokami, landingi 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.
Projekty WordPress zrealizowane w Genewie i Szwajcaria
Zobacz wybrane realizacje, które wspierają biznes naszych klientów.
olshtyn.com - Projekt WordPress | WPPoland
Strona olshtyn.com to portal informacyjny, stworzony z myślą o mieszkańcach oraz turystach zainteresowanych życiem i atrakcjami miasta Olsztyn. Pr...
Optymalizacja Wydajności WooCommerce i Core Web Vitals (Case Study)
Jak operator B2B WooCommerce z Unii Europejskiej z katalogiem ponad 12 000 produktów wyeliminował opóźnienia w procesie zamówienia, zredukował LCP z 5,4 s do 1,8 s i skrócił TTFB kasy z 2,1 s do 0,4 s bez ryzyka dla transakcji.
osemka.pl - Projekt WordPress | WPPoland
Osemka.pl (znane również jako 8.pl) to portal społecznościowy, który został zaprojektowany i wdrożony w latach 2006-2007 jako miejsce integracji użytkowników...
Wsparcie techniczne WordPress w Genewie
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.
Co wyróżnia w Genewie
Lokalna ekspertyza: - Seniorskie prace WordPress dla organizacji międzynarodowych, NGO i sektora finansowego w Genewie: motywy blokowe, wzorce Gutenberg, CPT i własne wtyczki - Wielojęzyczność FR-CH, EN i opcjonalnie DE-CH z formalnym rejestrem (vous, Sie) wpisana w ciągi motywu i proces redakcyjny, nie w maszynowy pipeline - revFADP / nDSG, świadomość wytycznych FINMA i WCAG 2.2 / EN 301 549 w procesie realizacji, bez certyfikatu, którego nie było Nasz zespół rozumie specyfikę rynku w Genewie i dostosowuje rozwiązania do lokalnych potrzeb biznesowych. W praktyce oznacza to nacisk na Core Web Vitals, lokalny intent oraz architekturę informacji dopasowaną do rynku w Genewie.
Potrzebujesz usługi: Programista WordPress w Genewie?
Porozmawiajmy o tym, jak możemy wprowadzić Twoją stronę na wyższy poziom wydajności.
Umów bezpłatną konsultację w GenewieFAQ - Programista WordPress w Genewie
Jakie projekty WordPress podejmujecie w Genewie?
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 dla organizacji międzynarodowych, NGO, fundacji i sektora finansowego w Genewie. 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.
Motyw od zera czy rozszerzenie istniejącego?
Oba podejścia. Nowy projekt w Genewie zwykle zaczyna się od motywu blokowego opartego o API edytora: theme.json, wzorce bloków, warianty. Odziedziczone instalacje fundacji, think-tanku albo biura doradczego częściej potrzebują skoncentrowanej refaktoryzacji hierarchii szablonów i procesu budowania zasobów niż przepisywania od zera. Decyzja zapada na bazie kosztu względem długu, a nie tego, co ciekawiej się buduje.
Gutenberg i FSE czy motyw klasyczny?
Dla nowych budów domyślem jest motyw blokowy z edycją całej witryny, bo tam zmierza edytor WordPressa. Klasyczne motywy PHP zostają, gdy istniejąca warstwa logiki w szablonach jest zbyt kosztowna do przeniesienia, albo gdy zespół redakcyjny pracuje w klasycznym edytorze i zmiana narzędzia byłaby większym ryzykiem niż dług techniczny. Wybór trafia do pisemnego kompromisu technicznego, nie do decyzji ideologicznej.
Czy budujecie też wtyczki, czy tylko motywy?
Jeśli funkcjonalność jest logiczna, a nie prezentacyjna, trafia do wtyczki, żeby przetrwała zmianę motywu. Motywy opisują prezentację i strukturę redakcyjną. Wtyczki trzymają integracje, własne typy treści (publikacja, wydarzenie, osoba, raport, stanowisko), logikę biznesową, endpointy REST i narzędzia administracyjne. Granica zapada na etapie architektury i jest zapisana w runbooku.
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 Genewie, nie ten brief.
Technologie i Specjalizacje - w Genewie
Specjalizujemy się w:
Wspominamy o:
Sprawdź inne usługi WordPress i bazę wiedzy
Wzmocnij swój biznes dzięki profesjonalnemu wsparciu technicznemu w kluczowych obszarach ekosystemu WordPress.
Audyt CrUX i atrybucja LCP, INP, CLS per template.
Core Web Vitals, cache i szybki frontend.
Stabilność, aktualizacje i wsparcie po wdrożeniu.
Migracja do Astro, Next.js i headless WordPress.
Headless WordPress, Sanity, Strapi i Contentful z Astro lub Next.js.
Audyt, hardening i ochrona przed incydentami.
Powiązane kategorie
Artykuły wspierające temat

Jak zoptymalizować Interaction to Next Paint (INP) na stronach WordPress. Praktyczne poprawki najnowszej metryki Core Web Vitals wpływającej bezpośrednio na pozycje w Google.

Pole kontra lab, LCP, INP i CLS dla WordPressa w 2026. Zielone LCP Google to nadal 2,5 s w CrUX. 100/100 w Lighthouse to cel laboratoryjny. Consent, Cookiebot, widgety kasowe, cache HTML.

Porównanie najlepszych wtyczek do optymalizacji obrazów w WordPress, konfiguracja dostarczania WebP/AVIF, ekstrakcja critical CSS i ustawienie LiteSpeed Cache dla maksymalnych wyników PageSpeed.