Często zdarza się konieczność zmiany obecnego systemu CMS. Problem pojawia się gdy dany system nie posiada funkcji dedykowanych do tego celu, a dostępne rozwiązania są płatne – tak jak w przypadku Joomli dość popularnym rozszerzeniem K2. W niniejszym tutorialu postaram się przedstawić proces wspomnianej migracji z Joomli 3.0 na Wordressa (3.8).
W omawianym przykładzie przedstawiony został sposób przeniesienia treści artykułów, kategorii, oraz ich relacje pomiędzy nimi. Pominięte zostały tagi (które nie były wykorzystywane) oraz komentarze. Ich przeniesienie można wykonać analogicznie do przedstawionych dalej opisów.
Wszystkie informacje o artykułach i kategoriach z modułu K2 w Joomli są przechowywane w tabelach: k2_items oraz k2_categories. W moim przypadku pominięte zostały komentarze oraz obrazki, które w K2 są dołączane w dość specyficzny sposób o czym później.
Pierwszym krokiem jest przekopiowanie tabel k2_items oraz k2_categories do bazy danych z wordpressem co ułatwi dalszą pracę.
Kolejnym krokiem jest wyczyszczenie wszystkich treści z bazy danych wordpressa. W przeciwnym wypadku wystąpią błędy z dopasowaniem kategorii do postów. Najlepszym rozwiązaniem będzie wykorzystanie „świeżej” instalacji WordPressa.
Kolejne kroki wymagają jedynie wykonania kilku poleceń SQL. Należy pamiętać, aby w poniższych poleceniach dobrać odpowiednie prefixy tabel Joomli i WordPressa.
Pierwsze ma na celu przekopjowanie treści poszczególnych postów do tabeli wp_posts:
INSERT INTO wp_posts (`post_title`, `post_name`, `post_status`, `post_excerpt`, `post_content`, `post_date`, `post_date_gmt`) SELECT `title`, `alias`, 'publish' , `introtext`, `fulltext` , `modified`, `modified` FROM k2_items ;
Dalej przenosimy informacje o kategoriach do tabeli wp_terms:
INSERT INTO `wp_terms`(`term_id`, `name`, `slug`, `term_group`) SELECT `id`, `name`, `alias` FROM `k2_categories`
Następnie nazwom kategorii przypisujemy ich funkcję czyli kategorię w tabeli wp_term_taxonomy:
INSERT IGNORE INTO `wp_term_taxonomy`(`term_taxonomy_id`, `term_id`, `taxonomy`) select `term_id`, `term_id` , "category" from `wp_terms`
Ostatnim krokiem jest przypisanie postów do poszczególnych kategorii. Wszystkie te informacje są zapisywane do tabeli wp_term_relationships:
INSERT INTO `wp_term_relationships`(`object_id`, `term_taxonomy_id`) SELECT `id`, `catid` FROM `k2_items`
Jeżeli powyższe kroki zostały wykonane, wszystkie posty powinny być już dostępne w WordPressie. Ostatnim elementem, którym należało by się zająć jest przeniesienie obrazków. W przypadku obrazów dołączanych w treści postów sprawa jest dość prosta – wystarczy za pomocą odpowiedniego zapytania SQL zmodyfikować ich adresy. Problem pojawia się w przypadku domyślnych obrazków artykułów K2.
K2 wykorzystuje nazwy będące niewiele mówiącym ciągiem znaków. Jest to w istocie efekt działania algorytmu MD5, któremu poddano tekst „Image{x}” – gdzie x to numer danego postu w bazie danych. I tak np. dla postu o numerze ID = 234 po przetworzeniu tekstu „Image234″ otrzymamy ciąg znaków używany przez moduł K2: e7b279be6a862d254f0e7cc4dde2874e. Obrazek ma taką samą nazwę – oczywiście z dołączonym rozszerzeniem „.jpg”.
Post Joomla 3.x K2 – migracja na WordPressa 3.8 pojawił się poraz pierwszy w Webs TOP.