Punkt startowy
TYPO3 było CMS-em korporacyjnym ponad dekadę. Redaktorzy znali skróty klawiszowe. Strona była wpięta w review prawny, w tłumaczenia i w księgę marki starszą niż większość obecnych pracowników.
Migracja nie była redesignem. Trzeba było utrzymać tożsamość wizualną, każdy URL, macierz wielojęzyczną i kalendarz redakcyjny w trakcie zmiany platformy.
Audyt modelu treści
Pierwszy miesiąc to czytanie drzewa stron w TYPO3, a nie pisanie kodu. Każdy element treści TYPO3 musiał być sklasyfikowany: natywny odpowiednik w WordPress core, kandydat na ACF lub pattern bloków, kandydat na archiwizację jako statyczna treść, kandydat na wycofanie.
Audyt dał mapę jeden do jeden. Bez tej mapy migracja staje się zgadywaniem.
Mapa elementów treści na bloki
Audyt dał mapę jeden do jeden. Wiersze poniżej to reguły klasyfikacji użyte w tym projekcie; dokładne liczby CType pozostają poufne.
| Źródło TYPO3 (typowe) | Klasyfikacja | Cel w WordPress | Uwagi |
|---|---|---|---|
| Text / header / bodytext | Natywny odpowiednik | Core: akapit, nagłówek, lista, cytat | Czysty HTML; usuń opakowania TypoScript |
| Image / textpic / media | Natywny + media | Core image / gallery + biblioteka mediów | FAL do uploads; regeneracja rozmiarów przed przełączeniem |
| Bullet / table | Natywny odpowiednik | Core lista / tabela | Preferuj core zamiast własnego HTML |
| Accordion / tabs / własny CE | Pattern lub ACF | Block pattern albo ACF + InnerBlocks | Nazwij wzorce językiem redaktorów |
| News / press / jobs / events / people | Strukturalne | CPT + taksonomie (+ ACF) | Drzewo stron to nie kategoria; uprawnienia osobno |
| Współdzielone header/footer / teasery | Globalne | Zsynchronizowane patterns lub template parts | Unikaj utraty wielojęzycznych fragmentów |
| Chrome tylko z TypoScript | Wycofaj lub przebuduj | Theme / FSE template | Nie importuj TypoScript |
| Przestarzały CE bez ruchu | Wycofaj | Archiwum lub usunięcie | Udokumentuj wycofanie w mapie |
| Niejasne / ciężkie Extbase | Eskalacja | Własny plugin lub CPT + REST | Ta sama klasa co trzy makra zastąpione tu |
Ciągłość URL i danych strukturalnych
Każdy URL został zachowany. Tam gdzie TYPO3 miał RealURL albo segmenty ścieżki nieprzystające do nowego modelu, wygenerowano i zwalidowano mapę 301 przed wdrożeniem. Warianty językowe zostały na tych samych ścieżkach.
Dane strukturalne Article i Organization przemigrowały razem z treścią. Hreflang sprawdzono dla każdego języka przed przełączeniem DNS.
Checklista mapy przekierowań
Tam gdzie RealURL lub segmenty ścieżki TYPO3 już nie pasowały, wygenerowano i zwalidowano mapę 301 przed wdrożeniem. Warianty wielojęzyczne zostawały na tych samych ścieżkach, gdy model treści na to pozwalał.
| Kolumna | Wymagane | Cel |
|---|---|---|
| source_url | tak | Pełna ścieżka legacy (w tym prefix locale / segment RealURL) |
| target_url | tak | Permalink WordPress po mapie modelu |
| status | tak | Domyślnie 301; rzadko 410 przy celowym wycofaniu |
| locale | tak | en / de / … zgodne z zestawem hreflang |
| hreflang_group_id | tak | Łączy warianty językowe, by żaden nie został sierotą |
| realurl_note | gdy potrzeba | Dlaczego ścieżka nie mogła zostać identyczna |
| organic_traffic | zalecane | Oznacz wiersze z hitami GSC/analytics do priorytetowego QA |
| validated_on_staging | tak | Checkbox / data przed DNS |
| owner | opcjonalne | Kto podpisał wiersz |
Wprowadzenie redaktorów
Redaktorzy mieli szkolenie w piątek, równoległą publikację w poniedziałek i przełączenie w środę. Edytor blokowy został zlokalizowany, wzorce zostały nazwane językiem, którego naprawdę używali, a mały plugin zastąpił trzy najważniejsze makra TYPO3.
Nikt nie musiał uczyć się księgi marki od nowa. Księga marki zastąpiła platformę, nie odwrotnie.
Przedziały wyników
Dokładne liczby są poufne. Publicznie można powiedzieć: tempo pracy redakcyjnej poprawiło się w pierwszym miesiącu, waga strony na rodzinie szablonów korporacyjnych wyraźnie spadła, a widoczność w wyszukiwarce dla niemieckich głównych zapytań utrzymała się przez przełączenie bez dołka.
Migracja TYPO3 do WordPress jest migracją modelu treści. Model trzeba zaudytować przed budową importerów.