Jak przenieść stronę Drupal do WordPress: Kompletny przewodnik techniczny
Migracja z Drupal do WordPress oznacza przeniesienie zawartości bazy danych, plików multimedialnych, struktury URL i kont użytkowników z architektury CMS opartej na encjach Drupal do modelu typów postów WordPress — bez utraty wartości SEO, zerwania wewnętrznych linków ani powodowania przestojów. Proces obejmuje import treści na poziomie bazy danych za pomocą wtyczki FG Drupal to WordPress, a następnie mapowanie permalinków, konfigurację przekierowań 301 i rekonstrukcję motywu.
Ten przewodnik obejmuje każdą fazę migracji w precyzyjnych szczegółach technicznych: strategię tworzenia kopii zapasowych przed migracją, konfigurację środowiska, wyodrębnianie danych uwierzytelniających bazy danych, import oparty na wtyczkach, uzgadnianie struktury URL i walidację po uruchomieniu. Niezależnie od tego, czy korzystasz z Drupal 7, 9 czy 10, poniższy przepływ pracy ma zastosowanie.
Dlaczego warto migrować z Drupal do WordPress
Drupal to potężny framework, ale jego złożoność wiąże się z realnym kosztem operacyjnym. Aktualizacje modułów często wprowadzają przełomowe zmiany, tworzenie motywów wymaga znajomości szablonów Twig, a rutynowe edycje treści wymagają zaangażowania programistów. WordPress natomiast oferuje łagodniejszą krzywą uczenia się, znacznie większy ekosystem wtyczek i niższy całkowity koszt posiadania dla witryn z dużą ilością treści, które nie wymagają szczegółowej kontroli dostępu Drupal ani złożonego modelowania treści.
Ważny jest również argument dotyczący wydajności. Instalacja WordPress na odpowiednio skonfigurowanym środowisku VPS Hosting z LiteSpeed, buforowaniem obiektów i pamięcią masową NVMe będzie konsekwentnie przewyższać wydajnością rozbudowany stos Drupal na infrastrukturze współdzielonej.
Kluczowe motywacje do migracji według przypadku użycia:
- Zespoły redakcyjne sfrustrowane interfejsem administratora Drupal i powolnymi przepływami pracy przy publikowaniu
- Agencje konsolidujące witryny klientów na jednym zarządzalnym CMS
- Programiści redukujący koszty utrzymania wynikające z łańcuchów zależności modułów Drupal
- Zespoły SEO poszukujące ściślejszej integracji z natywnymi narzędziami WordPress, takimi jak Yoast lub Rank Math
Drupal vs. WordPress: Porównanie architektury
Zrozumienie strukturalnych różnic między obiema platformami jest niezbędne przed rozpoczęciem pracy. Błędne założenia dotyczące sposobu przechowywania treści są główną przyczyną nieudanych lub niekompletnych migracji.
| Wymiar | Drupal | WordPress |
|---|---|---|
| Model treści | Encje (węzły, terminy taksonomii, pola) | Typy postów (posty, strony, CPT) |
| Schemat bazy danych | Wysoce znormalizowany, wiele tabel na typ treści | Płaski model wp_posts + wp_postmeta |
| Routing URL | Aliasy ścieżek przechowywane w tabeli path_alias | Reguły przepisywania permalinków przez .htaccess |
| Silnik motywów | Szablony Twig + hooki Preprocess | Hierarchia szablonów PHP + hooki |
| Role użytkowników | Szczegółowe uprawnienia na rolę | Stała hierarchia ról (Subskrybent → Administrator) |
| Obsługa mediów | Encja zarządzanych plików z załącznikami pól | Biblioteka mediów z typem postu załącznika |
| Wielojęzyczność | Podstawowy moduł Language | Wymaga wtyczki WPML lub Polylang |
| REST API | Moduły podstawowe JSON:API + REST | Wbudowane WP REST API |
| Złożoność hostingu | Wysoka (wymaga Composer, Drush) | Niska (standardowy stos LAMP/LEMP) |
| Ekosystem wtyczek/modułów | ~50 000 modułów | ~60 000+ wtyczek |
Najważniejszą luką architektoniczną jest model encji treści. Drupal przechowuje akapity, pola niestandardowe i odwołania do taksonomii w wielu połączonych tabelach. Wtyczka FG Drupal to WordPress mapuje je na metadane postów WordPress i terminy taksonomii, ale złożone układy oparte na akapitach będą wymagały ręcznej rekonstrukcji.
Lista kontrolna przed migracją
Przed dotknięciem któregokolwiek środowiska wykonaj każdy element na tej liście. Pomijanie kroków jest główną przyczyną utraty danych i przedłużonych przestojów.
- Przeprowadź audyt inwentarza treści Drupal: typy węzłów, słowniki taksonomii, liczba użytkowników, liczba plików i całkowity rozmiar bazy danych
- Zidentyfikuj moduły Drupal, które nie mają odpowiednika w WordPress (np. Rules, złożona logika Webform, Commerce)
- Upewnij się, że serwer WordPress spełnia minimalne wymagania: PHP 8.1+, MySQL 8.0+ lub MariaDB 10.6+, limit pamięci PHP 256 MB
- Zdecyduj o oknie migracji — najlepiej w okresie niskiego ruchu
- Włącz tryb konserwacji w Drupal podczas ostatniego przebiegu importu, aby zapobiec dryfowi treści
- Sprawdź, czy serwer WordPress może dotrzeć do hosta bazy danych Drupal (ten sam serwer, zdalny host lub tunel SSH)
Krok 1: Utwórz kopię zapasową swojej witryny Drupal
Pełna, zweryfikowana kopia zapasowa jest niezbędna. Potrzebujesz zarówno zrzutu bazy danych, jak i katalogu plików.
Kopia zapasowa bazy danych przez Drush
Jeśli masz zainstalowany Drush (standardowy dla Drupal 9/10), jest to najszybsza metoda:
drush sql-dump --result-file=/var/backups/drupal_backup_$(date +%Y%m%d).sql --gzipKopia zapasowa bazy danych przez mysqldump
mysqldump -u drupal_user -p drupal_database_name | gzip > /var/backups/drupal_backup_$(date +%Y%m%d).sql.gzKopia zapasowa katalogu plików
tar -czf /var/backups/drupal_files_$(date +%Y%m%d).tar.gz /var/www/html/drupal/sites/default/files/Kopia zapasowa przez phpMyAdmin (metoda GUI)
- Zaloguj się do phpMyAdmin przez panel sterowania hostingu
- Wybierz bazę danych Drupal z lewego paska bocznego
- Kliknij Eksportuj, wybierz metodę eksportu Szybki, format SQL
- Kliknij Wykonaj, aby pobrać plik
.sql
Przechowuj wszystkie archiwa kopii zapasowych poza serwerem — prześlij je do zdalnego magazynu lub pobierz lokalnie przez SFTP. Kopia zapasowa, która istnieje tylko na tym samym serwerze co migrowana witryna, nie jest prawdziwą kopią zapasową.
Krok 2: Skonfiguruj WordPress na docelowym serwerze
Zainstaluj czystą instancję WordPress w docelowym środowisku. Nie importuj treści Drupal do istniejącej witryny WordPress, chyba że wyraźnie zaplanowałeś scalanie treści — importer nie będzie deduplikować.
Wymagania serwera
| Wymaganie | Minimalne | Zalecane |
|---|---|---|
| Wersja PHP | 7.4 | 8.2 |
| MySQL/MariaDB | MySQL 5.7 / MariaDB 10.3 | MySQL 8.0 / MariaDB 10.11 |
| Limit pamięci PHP | 64 MB | 256 MB |
max_execution_time | 30s | 300s |
upload_max_filesize | 8 MB | 128 MB |
W przypadku dużych witryn Drupal (ponad 10 000 węzłów, wielogigabajtowe biblioteki mediów), VPS z cPanel zapewnia bezpośredni dostęp do konfiguracji PHP, parametrów dostrajania MySQL i zarządzania zadaniami cron — wszystkich elementów, które będą potrzebne podczas intensywnej migracji.
Instalacja WordPress przez WP-CLI
cd /var/www/html/wordpress
wp core download
wp config create --dbname=wp_database --dbuser=wp_user --dbpass=secure_password --dbhost=localhost
wp core install --url="https://yourdomain.com" --title="Site Title" --admin_user=admin --admin_password=strongpassword --admin_email=admin@yourdomain.comInstalacja jednym kliknięciem przez cPanel
Jeśli Twój host udostępnia cPanel, przejdź do Softaculous Apps Installer, wybierz WordPress, wypełnij dane bazy danych i dane uwierzytelniające administratora, a następnie kliknij Zainstaluj. Proces zajmuje mniej niż dwie minuty.
Po instalacji natychmiast skonfiguruj te ustawienia PHP w php.ini lub przez .htaccess:
php_value max_execution_time 300
php_value memory_limit 256M
php_value post_max_size 128M
php_value upload_max_filesize 128MKrok 3: Zainstaluj i skonfiguruj wtyczkę FG Drupal to WordPress
Wtyczka FG Drupal to WordPress (dostępna bezpłatna wersja; Premium zalecana dla dużych witryn) obsługuje migrację na poziomie bazy danych węzłów, terminów taksonomii, użytkowników i plików multimedialnych.
Instalacja
- W panelu administracyjnym WordPress przejdź do Wtyczki > Dodaj nową
- Wyszukaj
FG Drupal to WordPress - Kliknij Zainstaluj teraz, a następnie Aktywuj
Alternatywnie zainstaluj przez WP-CLI:
wp plugin install fg-drupal-to-wp --activatePorównanie funkcji wersji bezpłatnej i Premium
| Funkcja | Bezpłatna | Premium |
|---|---|---|
| Obsługa Drupal 6/7 | Tak | Tak |
| Obsługa Drupal 8/9/10 | Częściowa | Pełna |
| Migracja akapitów | Nie | Tak |
| Migracja użytkowników | Nie | Tak |
| Migracja Webform | Nie | Tak |
| E-commerce (Drupal Commerce) | Nie | Tak |
| Treści wielojęzyczne | Nie | Tak |
| Wsparcie priorytetowe | Nie | Tak |
W przypadku każdej witryny produkcyjnej działającej na Drupal 8 lub nowszym, wersja Premium jest warta swojej ceny. Ręczna rekonstrukcja treści opartych na akapitach jest znacznie droższa pod względem czasu programisty.
Krok 4: Zbierz dane uwierzytelniające bazy danych Drupal
Wtyczka FG Drupal to WordPress łączy się bezpośrednio z bazą danych Drupal. Potrzebujesz czterech wartości: nazwy bazy danych, nazwy użytkownika, hasła i hosta.
Znajdowanie danych uwierzytelniających w settings.php Drupal
grep -A 20 "'database'" /var/www/html/drupal/sites/default/settings.phpWynik będzie zawierał blok podobny do tego:
$databases['default']['default'] = [
'database' => 'drupal_db_name',
'username' => 'drupal_db_user',
'password' => 'drupal_db_password',
'host' => 'localhost',
'port' => '3306',
'driver' => 'mysql',
];Uwagi dotyczące zdalnego dostępu do bazy danych
Jeśli WordPress i Drupal znajdują się na różnych serwerach, baza danych Drupal musi akceptować zdalne połączenia. Na serwerze bazy danych Drupal:
GRANT SELECT ON drupal_database.* TO 'drupal_user'@'wordpress_server_ip' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;Upewnij się również, że port 3306 jest otwarty w zaporze sieciowej tylko dla IP serwera WordPress — nigdy nie wystawiaj MySQL na 0.0.0.0.
Jeśli nie możesz otworzyć bezpośredniego portu MySQL, użyj tunelu SSH:
ssh -L 3307:localhost:3306 user@drupal_server_ip -N -fNastępnie ustaw hosta bazy danych wtyczki na 127.0.0.1 i port na 3307.
Krok 5: Uruchom import treści
Przejdź do Narzędzia > Importuj w panelu WordPress, przewiń do sekcji Drupal i kliknij Uruchom importer.
Konfiguracja ustawień importera
Zakładka połączenia z bazą danych:
- Host bazy danych:
localhost(lub zdalny IP / adres tunelu SSH) - Port:
3306(lub Twój niestandardowy port) - Nazwa bazy danych: wartość z
settings.php - Nazwa użytkownika / Hasło: wartości z
settings.php - URL plików Drupal: publiczny URL katalogu
sites/default/files/Drupal — wymagany do pobierania mediów
Kliknij Testuj połączenie przed kontynuowaniem. Nieudane połączenie na tym etapie jest prawie zawsze spowodowane jednym z trzech problemów: nieprawidłowymi danymi uwierzytelniającymi, zaporą sieciową blokującą port MySQL lub brakiem uprawnień SELECT użytkownika bazy danych Drupal do docelowej bazy danych.
Zakładka zachowania — zalecane ustawienia dla większości migracji:
- Importuj posty: Tak
- Importuj strony: Tak
- Importuj kategorie i tagi: Tak
- Pobierz obrazy i załączniki: Tak (wymagane do skopiowania mediów do katalogu przesyłania WordPress)
- Usuń dane WordPress przed importem: Tak (tylko przy świeżej instalacji — powoduje to obcięcie
wp_postsi powiązanych tabel)
Uruchamianie importu
Kliknij Uruchom / Wznów importer. Wtyczka przetwarza treści partiami. W przypadku dużych witryn import może przekroczyć limit czasu i wymagać wielu cykli wznawiania — jest to oczekiwane zachowanie, a nie błąd. Po prostu klikaj Wznów za każdym razem.
Monitoruj dziennik importu wyświetlany na ekranie. Zwróć uwagę na:
Error downloading file — wskazuje, że URL plików Drupal jest nieprawidłowy lub katalog plików nie jest publicznie dostępny
Błędy Duplicate entry — zazwyczaj nieszkodliwe, wskazujące, że wtyczka pomija już zaimportowane rekordy podczas wznawiania
MySQL server has gone away — wskazuje, że wait_timeout jest zbyt niski na serwerze MySQL; zwiększ go do co najmniej 600 sekund
SET GLOBAL wait_timeout = 600;
SET GLOBAL interactive_timeout = 600;
Krok 6: Uzgodnij strukturę URL i skonfiguruj przekierowania
To jest krok, który większość przewodników niedocenia. Niezgodności struktury URL między Drupal a WordPress są główną przyczyną spadków pozycji SEO po migracji.
Wzorce URL Drupal (typowe)
Wzorzec URL Drupal
Opis
/node/123
Domyślna ścieżka węzła (bez aliasu)
/about-us
Alias ścieżki (najczęstszy)
/taxonomy/term/5
Strona terminu taksonomii
/user/1
Profil użytkownika
/content/article-title
Alias z prefiksem typu treści
Konfiguracja permalinków WordPress
Przejdź do Ustawienia > Bezpośrednie odnośniki i wybierz strukturę, która jak najbardziej odpowiada aliasem ścieżek Drupal. W przypadku większości witryn Drupal używających czystych aliasów, /%postname%/ jest właściwym wyborem.
/%postname%/
Jeśli Twoja witryna Drupal używała URL z prefiksem kategorii, takich jak /blog/article-title, użyj:
/%category%/%postname%/
Implementacja przekierowań 301
Zainstaluj wtyczkę Redirection (autorstwa Johna Godleya) do zarządzania regułami przekierowań. W przypadku masowych przekierowań wyeksportuj aliasy ścieżek Drupal z bazy danych:
SELECT source, alias FROM path_alias WHERE langcode = 'en';
Następnie zaimportuj wynikowy plik CSV do wtyczki Redirection, mapując każdy alias Drupal na jego odpowiednik w WordPress. W przypadku URL w stylu /node/123, które nigdy nie miały aliasu, utwórz przekierowania oparte na wyrażeniach regularnych:
/node/([0-9]+)$ → /?p=$1
Mapuje to ID węzłów Drupal na ID postów WordPress — ale działa tylko wtedy, gdy wtyczka FG zachowała oryginalne ID węzłów jako ID postów, co robi domyślnie.
Ważne: Przetestuj każde przekierowanie za pomocą curl -I przed uruchomieniem:
curl -I https://yourdomain.com/old-drupal-path
Sprawdź, czy odpowiedź to HTTP/2 301 z prawidłowym nagłówkiem Location, a nie 302 ani 200 z miękkim przekierowaniem.
Krok 7: Migruj motywy i odbuduj projekt
Motywy Drupal (oparte na Twig) nie mają bezpośredniego odpowiednika w WordPress. Musisz odbudować projekt wizualny, używając motywu WordPress jako podstawy.
Strategia wyboru motywu
Motywy blokowe (FSE): Użyj Edytora witryny WordPress do pełnej kontroli układu bez kreatorów stron. Najlepsze dla programistów zaznajomionych z znacznikami bloków.
Klasyczne motywy z kreatorem stron: Motywy takie jak Astra lub GeneratePress w połączeniu z Elementor lub Bricks Builder oferują najbliższy odpowiednik Layout Builder Drupal.
Niestandardowy motyw potomny: Jeśli Twoja witryna Drupal miała mocno dostosowany projekt, zbuduj motyw potomny oparty na minimalnym motywie nadrzędnym (Underscores, Blocksy) i odtwórz CSS.
Odbudowa menu nawigacyjnych
Menu Drupal nie migrują automatycznie. Odbuduj je w Wygląd > Menu (motywy klasyczne) lub w bloku Nawigacja Edytora witryny (motywy FSE). Odwołaj się do struktury menu Drupal:
drush eval "print_r(menu_tree_all_data('main', NULL));"
Lub zapytaj bazę danych bezpośrednio:
SELECT ml.link_path, ml.link_title, ml.weight, ml.depth
FROM menu_links ml
WHERE ml.menu_name = 'main-menu' AND ml.hidden = 0
ORDER BY ml.weight;
Widżety i bloki
Bloki Drupal luźno odpowiadają widżetom WordPress i blokom Gutenberg. Odbuduj regiony paska bocznego i stopki w Wygląd > Widżety lub bezpośrednio w Edytorze witryny. Niestandardowe typy bloków Drupal z logiką PHP będą musiały zostać przebudowane jako shortcody WordPress lub niestandardowe bloki.
Krok 8: Audyt treści po migracji
Nie pomijaj tej fazy. Automatyczne narzędzia migracji dobrze radzą sobie ze strukturyzowanymi treściami, ale po cichu zawodzą w przypadkach brzegowych.
Kontrole integralności treści
Osadzone media: Wbudowane odwołania do plików Drupal używają niestandardowego formatu tokenów ([file:123] lub <drupal-media uuid="..."/>). Nie będą renderowane w WordPress. Przeszukaj bazę danych pod kątem tych tokenów:
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%drupal-media%' OR post_content LIKE '%[file:%';
Shortcody i Views: Drupal Views nie ma odpowiednika w WordPress. Każda strona, która renderowała widok (np. filtrowana lista treści), będzie pusta. Odbuduj je za pomocą WP_Query, archiwów niestandardowych typów postów lub wtyczki takiej jak Posts Table Pro.
Pola niestandardowe: Dane pól Drupal zmigrowane przez wtyczkę Premium trafiają do wp_postmeta. Sprawdź, czy wartości pól są obecne:
SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE meta_key LIKE 'field_%' LIMIT 50;
Konta użytkowników: Jeśli migrowałeś użytkowników, sprawdź mapowanie ról. Rola authenticated user Drupal mapuje się na Subscriber WordPress. Drupal editor mapuje się na Editor WordPress. Drupal administrator mapuje się na Administrator WordPress. Przeprowadź audyt mapowania i dostosuj je w razie potrzeby.
Wykrywanie uszkodzonych linków
Zainstaluj Broken Link Checker lub uruchom przeszukiwanie za pomocą Screaming Frog na środowisku testowym przed przełączeniem DNS. Napraw wszystkie wewnętrzne błędy 404 przed uruchomieniem — nie polegaj na monitorowaniu po uruchomieniu, aby je wykryć.
Krok 9: Utwardzanie wydajności i bezpieczeństwa
Świeżo zmigrowana witryna WordPress wymaga utwardzenia przed przejściem do środowiska produkcyjnego.
Konfiguracja buforowania
Zainstaluj LiteSpeed Cache (jeśli na serwerze LiteSpeed) lub W3 Total Cache / WP Rocket dla środowisk Apache/Nginx. Skonfiguruj:
Pamięć podręczna stron z TTL wynoszącym co najmniej 3600 sekund dla stron statycznych
Pamięć podręczna obiektów wspierana przez Redis lub Memcached
Nagłówki pamięci podręcznej przeglądarki przez .htaccess lub konfigurację serwera
SSL/HTTPS
Upewnij się, że Twoja witryna WordPress jest serwowana wyłącznie przez HTTPS. Jeśli nie masz jeszcze certyfikatu, Certyfikaty SSL można szybko udostępnić i skonfigurować do automatycznego odnawiania. Zaktualizuj ustawienia URL witryny WordPress:
wp option update siteurl 'https://yourdomain.com'
wp option update home 'https://yourdomain.com'
Wymuś HTTPS w .htaccess:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Lista kontrolna utwardzania bezpieczeństwa
Wyłącz XML-RPC, jeśli nie jest potrzebny: dodaj add_filter('xmlrpc_enabled', '__return_false'); do functions.phpwp_ (wymaga zmiany nazwy bazy danych — zrób to przed importem, jeśli to możliwe)755, pliki 644, wp-config.php 600find /var/www/html/wordpress -type d -exec chmod 755 {} ;
find /var/www/html/wordpress -type f -exec chmod 644 {} ;
chmod 600 /var/www/html/wordpress/wp-config.phpKrok 10: Przełączenie DNS i uruchomienie
Wykonaj przełączenie DNS podczas okna najniższego ruchu. Proces powinien zająć mniej niż 15 minut rzeczywistej pracy, z oknem propagacji do 48 godzin (zazwyczaj 1–4 godziny dla większości resolverów).
Ostatnie sprawdzenia przed przełączeniem
- Uruchom pełne przeszukiwanie URL testowego i potwierdź zero błędów 404
- Sprawdź, czy wszystkie przekierowania 301 zwracają prawidłowe nagłówki
Location - Przetestuj formularze kontaktowe, funkcjonalność wyszukiwania i wszelkie przepływy e-commerce
- Potwierdź, że Google Search Console jest zweryfikowane na nowej witrynie
- Wygeneruj i prześlij świeżą mapę witryny XML przez Yoast SEO lub Rank Math
Proces aktualizacji DNS
Jeśli zarejestrowałeś swoją domenę przez Rejestrację domen, zaktualizuj rekord A bezpośrednio w panelu zarządzania DNS. Obniż TTL do 300 sekund co najmniej 24 godziny przed przełączeniem, aby zminimalizować opóźnienie propagacji.
A record: yourdomain.com → [new WordPress server IP]
TTL: 300 (pre-cutover), restore to 3600 post-cutoverMonitorowanie po uruchomieniu
- Włącz narzędzie zmiany adresu Google Search Console, jeśli sama domena uległa zmianie
- Monitoruj Core Web Vitals w Search Console przez pierwsze 30 dni — spodziewaj się tymczasowych wahań pozycji, gdy Google ponownie przeszukuje i indeksuje
- Skonfiguruj UptimeRobot lub odpowiednik do monitorowania dostępności
- Sprawdzaj dzienniki błędów serwera codziennie przez pierwszy tydzień:
tail -f /var/log/apache2/error.log
# or for Nginx:
tail -f /var/log/nginx/error.logPonowne zgłoszenie do wyszukiwarek
Prześlij zaktualizowaną mapę witryny w Google Search Console:
- Przejdź do Search Console > Mapy witryn
- Wprowadź
sitemap.xml(lubsitemap_index.xmldla dużych witryn) - Kliknij Prześlij
Prześlij również do Bing Webmaster Tools i niezależnie zweryfikuj tam witrynę — indeks Bing jest używany przez kilka wyszukiwarek AI, w tym Copilot.
Zalecenia dotyczące infrastruktury hostingowej
Wydajność zmigrowanej witryny WordPress w dużej mierze zależy od podstawowej infrastruktury. Migracja z Drupal do WordPress to idealny moment na modernizację stosu hostingowego.
W przypadku witryn o umiarkowanym ruchu (10 000–100 000 wizyt miesięcznie), plan VPS Hosting z co najmniej 2 vCPU, 4 GB RAM i pamięcią masową NVMe zapewnia wystarczający margines dla WordPress z pełnym buforowaniem stron. W przypadku witryn o dużym ruchu lub wymagających dużych zasobów, Serwery dedykowane całkowicie eliminują problem hałaśliwego sąsiada i dają pełną kontrolę nad parametrami jądra, konfiguracją MySQL i dostrajaniem stosu sieciowego.
Jeśli zarządzasz wieloma witrynami klientów lub preferujesz zarządzanie serwerem przez GUI, Panele sterowania VPS oferują szereg opcji, w tym cPanel, Plesk i DirectAdmin — każdy obsługujący zarządzanie wieloma witrynami WordPress, automatyczne kopie zapasowe i udostępnianie SSL z jednego interfejsu.
Macierz decyzji technicznych: kiedy stosować każde podejście do migracji
| Scenariusz | Zalecane podejście | Kluczowe narzędzie |
|---|---|---|
| Drupal 7, mała witryna (<500 węzłów) | Bezpłatna wersja wtyczki FG, ten sam serwer | FG Drupal to WordPress (bezpłatna) |
| Drupal 9/10, treści oparte na akapitach | FG Plugin Premium, serwer testowy | FG Drupal to WordPress Premium |
| Drupal Commerce → WooCommerce | FG Premium + dodatek WooCommerce | FG + moduł migracji WooCommerce |
| Wielojęzyczna witryna Drupal | FG Premium + WPML | FG + wtyczka WPML |
| Drupal ze złożonymi Views | Wymagana ręczna przebudowa | WP_Query + CPT UI |
| Migracja na inny serwer | Tunel SSH dla dostępu do bazy danych | Przekierowanie portów SSH |
| Wymaganie zerowego przestoju | Wdrożenie blue-green | Redukcja TTL DNS + środowisko testowe |
Kluczowe wnioski techniczne
- Najpierw utwórz kopię zapasową. Skompresowany zrzut SQL i archiwum tar
sites/default/files/to Twoja siatka bezpieczeństwa. Sprawdź, czy oba są kompletne i możliwe do przywrócenia przed rozpoczęciem. - Przetestuj łączność z bazą danych przed uruchomieniem importera. Większość nieudanych migracji zatrzymuje się na teście połączenia z powodu reguł zapory sieciowej lub brakujących uprawnień
SELECT. - Treści Drupal oparte na akapitach wymagają wtyczki Premium. Bezpłatna wersja po cichu pomija pola akapitów, pozostawiając treści niekompletne bez komunikatu o błędzie.
- Przekierowania 301 nie są opcjonalne. Każdy URL Drupal, który ma zewnętrzne linki zwrotne lub indeksowanie przez wyszukiwarki, musi przekierowywać do swojego odpowiednika w WordPress za pomocą stałego przekierowania 301. Brakujące przekierowanie to utracony sygnał rankingowy.
- Obniż TTL DNS 24 godziny przed przełączeniem. Ustaw go na 300 sekund, aby propagacja zakończyła się w minutach, a nie godzinach, gdy zmienisz rekord A.
- Przeprowadź audyt
wp_postmetapod kątem niemapowanych pól Drupal. Dane pól niestandardowych trafiają tam po imporcie — sprawdź, czy są obecne i poprawnie oznaczone kluczami przed likwidacją instancji Drupal. - Nie likwiduj Drupal natychmiast. Utrzymuj środowisko Drupal działające (w trybie konserwacji, niedostępne publicznie) przez co najmniej 30 dni po uruchomieniu jako punkt odniesienia i opcja wycofania.
- Prześlij mapę witryny tego samego dnia, w którym przechodzisz na żywo. Nie czekaj, aż Googlebot organicznie odkryje nową strukturę — aktywne przesyłanie przyspiesza ponowne przeszukiwanie.
FAQ
Czy mogę zmigrować instalację Drupal multisite do WordPress?
Tak, ale każda podwitryna Drupal musi być migrowana osobno. Wtyczka FG Drupal to WordPress nie obsługuje natywnie Drupal multisite w jednym przebiegu. Uruchom osobny import dla każdej podwitryny, kierując go do sieci WordPress Multisite lub samodzielnych instalacji WordPress w zależności od architektury.
Czy hasła użytkowników Drupal zostaną przeniesione do WordPress?
Nie. Drupal używa solowanego hasha SHA-512 (lub bcrypt w nowszych wersjach), który jest niezgodny z hashowaniem opartym na phpass w WordPress. Wtyczka FG Premium migruje konta użytkowników, ale resetuje hasła, wysyłając e-mail z resetem hasła do każdego użytkownika. Zaplanuj odpowiednią komunikację z użytkownikami.
Jak obsługiwać typy treści Drupal bez odpowiednika w WordPress?
Zarejestruj równoważne niestandardowe typy postów (CPT) w WordPress przed uruchomieniem importu. Wtyczka FG Premium umożliwia mapowanie typów treści Drupal na CPT WordPress. Bez tego mapowania wszystkie węzły domyślnie przyjmują typ postu post, co powoduje zapaść taksonomii treści.
Co dzieje się z terminami taksonomii Drupal podczas migracji?
Słowniki Drupal mapują się na taksonomie WordPress. Domyślne mapowanie konwertuje tags Drupal na tagi WordPress, a categories Drupal na kategorie WordPress. Niestandardowe słowniki wymagają ręcznej rejestracji taksonomii w WordPress przed importem, w przeciwnym razie zostaną pominięte.
Jak długo trwa migracja dużej witryny Drupal?
W przypadku witryny z 5000 węzłami i 2 GB mediów, spodziewaj się 2–4 godzin czasu importu na dobrze wyposażonym serwerze, plus 4–8 godzin audytu treści po migracji i konfiguracji przekierowań. Samo przełączenie DNS zajmuje mniej niż 15 minut. Całkowity czas od początku do uruchomienia wynosi zazwyczaj jeden do dwóch dni roboczych dla dokładnej, produkcyjnej migracji.
