Migrace z RS2 na WordPress

Čas se nachýlil, a jelikož jsem uznal, že je RS2 definitivně mrtvý redakční systém bez vyhlídek na nějaký vývoj, rozhodl jsem se tedy celý web převrhnout na něco nového. Požadavky byly veskrze jednoduché, stačí mi systém, kde nebudu muset nic moc řešit (čas na to opravdu nemám), a který bude obstojně vypadat na mobilu, používat nějaký responzivní template, když se náhodou příspěvek vloží třeba na facebook, tak se tam doplní takové ty opengraph věci a tak.

Chvíle které jsem se tak děsil nastala, JAK to proboha převedu se zachováním všech textů a komentářů? Kdybych migroval třeba z Joomly, nebo Drupalu, věřím, že nástroje existují již hotové, ale RS2 rozhodně není světově používaný systém (sorry juneau 🙂 )

Žádný konkrétní step-by-step návod psát nebudu, ale v bodech co jsem řešil a jak jsem to vyřešil.

Začal jsem prostým exportem tabulky web_textyweb_komentáře z databáze RS2. S SQL končím u SELECTu, takže jsem exportoval do CSV, které se dá přeci tak snadno editovat v PSPadu či Excelu a pak ho jednoduše naimportuji pomocí nějakého WP pluginu – ano WP umí pluginy a je jich jen na webu WP asi 50 tisíc.

Texty/Příspěvky

V příspěvku WordPress. Nastavení, tipy a pluginy co jsem použil jsou vypsány plus mínus aktuálně používané pluginy na tomto webu.

Zkoušel jsem WP All ImportWP Ultimate CSV Importer vypadalo to nadějně, ale pořád to nefungovalo, protože 100+1 problém co jsem řešil postupně dále. Import nakonec zvládl Really Simple CSV Importer. Pořád jsem to CSV upravoval ale co nerozbil Excel to rozbil PSPad/Notepad++ při hromadném nahrazování. Navíc si to chce pořád hlídat oddělovač, kódování, obalení uvozovkami atd.

Začal jsem tedy hledat nějaký program na úpravy CSV souborů a z toho co jsem zkoušel vyšel naprosto vítězně CSV Editor Pro! Je to sice jen 30-denní trial, ale to nám stačí. Program umí naprosto zásadní věci jako spojování sloupců, multiline, trim whitespaces, popral se zatím s každým CSV co jsem mu dal, a je otázkou pár kliků pro změnu separátoru, uvozovky, kódování..

Data přímo vyexportovaná z RS2

Data přímo vyexportovaná z RS2

V CSV Editoru Pro jsem tedy začal všechny příspěvky editovat (občas se to neobešlo bez mezikroku s regexy v PSPadu (odmazání zbytků po Texyle, nějaké to nahrazování, ..) přejmenoval jsem názvy sloupců podle sample.csv z Really Simple CSV Importeru, vykosil nepotřebné HTML, znaky.. nahradil nějaký zbytečnosti, provedl zásadní věc a to spojení sloupců perex a text do jednoho (a mezi nimi je vložen tag MORE)

CSV po mnohých úpravách připravené na import do WP

CSV po mnohých úpravách připravené na import do WP

Při importu to pořád padalo na jednom příspěvku, tak jsem z CSV vymazal post_content, a po importu ho ručně vložil jako HTML přímo v administraci WP. Import se povedl, a na první pohled to vypadá výborně! Jsem smířen s tím, že jsem přišel o kategorie, ale stejně jsem je chtěl probrat a tak je vytvořím znovu. Dále budu muset zkontrolovat formátování textu, ale na první pohled to zas tak blbě nevypadá a v neposlední řadě budu muset opravit obrázky (šlo by hromadně změnit url v CSV před importem, ale chtělo by to změnit i to HTML kterým jsou obalené, a tak těch pár obrázků doedituju ručně. Tím pokládám Texty/Příspěvky za vyřešené.

Komentáře

Po Příspěvcích by to chtělo i komentáře, ty jsem chtěl 100% zachovat, protože si pod některými příspěvky dost žijí vlastním životem a je v nich spousta rad a odkazů.

Původní komentáře vyexportované přímo z databáze RS2

Původní komentáře vyexportované přímo z databáze RS2

Jenže ouha, žádný z importních pluginů pro WP co jsem našel neumí importovat komentáře z CSV! Budeme to tedy muset nějak spáchat ručně.

Bylo tedy třeba přejmenovat sloupce dle tabulky WP, doplnit email ke všem komentářům (dobře asi to není úplně nutné, ale u WP je to povinné pole), takže jsem doplnil example@example.com 🙂 z textu komentářů jsem zrušil všechno HTML, v Excelu jsem změnil hodnoty ve sloupci user_id na 1 pokud je autor mikrom jinak 0. comment_datecomment_date_gmt jsem nastavil stejné, funguje to, a jesli bude nějaký deset let starý komentář o hodinu či dvě mimo mi je buřt.

Po pár pokusech a omylech jsem měl CSV přesně odpovídající tabulce v databázi a přes PhpMyAdmin jsem ho naimportoval. Komentáře mám! Jsou všechny, vypadá to funkčně.

Komentáře připravené na import do WP

Komentáře připravené na import do WP

Jenže jsem si všimnul toho, že se mi na titulce webu neukazuje počet komentářů u příspěvků, čím to může být? aha – ono je to uložene v tabulce wp_posts u každého příspěvku ve sloupci comment_count. Jak to tam ale nějak elegantně dosypat.

Vzal jsem si tedy z CSV s komentáři sloupec comment_post_ID, kde se nám vlastně ukazuje vícekrát stejné číslo (příspěvku) přesně tolikrát kolik komentářů daný příspěvek má. Na to se hodí Excelovská funkce COUNTIF(), kdy jsem si udělal sloupec s čísly příspěvků (prostě jsem jen roztáhnul buňku o 1 do 392) a do vedlejšího sloupce jsem si nechal vypsat kolikrát je ve sloupci A hodnota z buňky ve sloupci B. Z výsledných dvou sloupců (comment_post_ID;comment_count) jsem si zase udělal CSV.

CountIf v praxi

CountIf v praxi

Toto CSV jsem poté zpracoval BAT souborem, který z něho udělal sadu SQL příkazů pro update tabulky.

Výsledkem je něco takového

takže, pro rekapitulaci, v tabulce wp_posts doplníme do sloupce comment_count počet komentářů daného příspěvku.

Nyní se již ukazuje v administraci WP kolik má daný příspěvek komentářů a i na té titulce webu se již informace ukazuje.

Pozor si dejte na to aby skutečně odpovídaly všechny komentáře ke všem příspěvkům! asi na dvou místech se mi to posunulo třeba o jeden a to pak bylo správné SQL harakiri porovnat.

Počty přečtení

Zatím jsem neřešil počty přečtení příspěvků, ale RS2 to v databázi má, a určitě byl nebyl problém těmi daty předkrmit nějaký WP plugin, třeba WP-PostViews.

Přesměrování starých adres

To je asi poslední věc co řeším, stále. Nechtělo se mi to řešit zase přes .htaccess, takže jsem se opět poohlédnul po pluginu a našel Redirection. Plugin je opravdu výborný, narozdíl od .htaccess mám přehled kolikrát bylo přesměrováno a také všechny 404ky ze kterých lze rovnou vytvořit další pravidla pro přesměrování.

Pravidla jsou nastavit buď jednoduchá – /tuhle/url/ -> /presmeruj/na/tuhle/, nebo pomocí oblíbených|nenáviděných regulárních výrazů (jedna z nejzásadnějších věcí co mě naučili na VŠ) – \/(tuhle)|(nebo-tuto)\/url\/ -> /presmeruj/sem/.

Pro RS2-WP kompatibilitu musíme pořešit odkazy na texty-příspěvky, články-stránky, obrázky, soubory, .. Takový základ je zde:

zdrojcilregexpopisek
\/(\d{1,3})\-/?p=$1anoVe staré verzi RS2 začínaly texty číslem.
\/text\-([\w-]+)/$1anoV současné verzi RS2 začínají texty slovem „text-„.
\/clanek-19(\/?)/category/geocaching/anoVe staré verzi RS2 jsou články problém, obsahují pouze číslo a tak se musí pro každý článek napsat redirect samostatně. V současné verzi RS2 se to řešit vůbec nemusíme!
(\/55\/)|(\/dokumenty\/55\/)|(\/docs&file=55)|(\/dokumenty\/hausmann\.pdf)|(\/soubory\/dokumenty\/hausmann\.pdf)/wp-content/uploads/2016/10/hausmann.pdfano!Dokumenty jsou taky peklo, během vývoje RS2 se odkazy měnily a různě po netu se povalují různé verze odkazů – tady oceníme regex!
/archiv/kategorie/27//category/kolobezky/neKategorie textů a souborů se musí řešit bohužel také každá zvlášť. Na to se hodí to sledování 404ek, a přesměrovávat to co je třeba.
\/archiv\/\?autor\=\&kategorie\=\&mesic\=(\d{4})(\d{2})$/$1/$2/anoArchivy se dají řešit docela elegantně.
\/archiv\/mesic\/(\d{4})(\d{2})\/$/$1/$2/anoDalší pravidlo pro archivy
\/obrazky\/pc\/bt-in-t23\/(.+\.jpg)/wp-content/uploads/2007/09/$1anoObrázky z příspěvků mi přivádí hodně lidí, je to docela jednoduché, jen se změnila url, obrázky zůstaly stejné. Ale zase se to musí udělat pro každý příspěvek zvlášť.
\/obrazky\/texty-(galerie|doprovodne)\/383\/(.+\.jpg)/wp-content/uploads/2014/08/$2anoTakhle jsou zase obrázky v novější verzi RS2.
/rss.xml/feedneNo a pak už se jen ladí detaily.

Konec?

To je zatím vše co mě napadá, uvidíme co se vyrojí dál..

mikrom

mikrom

Roman Mikulka aka mikrom. Ajťák, opravář, programátor samouk, elektrotechnik, koloběžkář a geocacher. Více na samostatné stránce O mně.

Mohlo by se vám líbit...

komentáře 2

  1. juneau napsal:

    Ha, to tedy bylo fest úsilí a ohromné množství práce, klobouk dolů. Před měsícem jsem přenášel RS2 s desetiletým archivem na WP, tak vím, co to obnáší. Obzvlášť, chtěl-li jsem to mít plně automatizované, a 100% – tedy všechny staré URL a obrázky v textech patřičně nahrazené, všechny obrázky a dokumenty naimportované do Knihovny médií … atd atd. Nakonec jsem skončil s naprogramováním WP pluginu, kde je za sebou asi 15 tlačítek, každé spouštějící import něčeho jiného. A po dvou týdnech jeho připravování jsem pak jen postupně všechna tlačítka odklikal, a měl nový plně funkční WP web s obsahem původního webu (cca 1000 textů, 60 fotogalerií a 5500 obrázků/fotek).

    Od začátku jsem přemýšlel, jestli ten WP plugin neudělat tak, aby jej mohl použít kdokoli, a nedát jej k dispozici lidem s RS2 weby … jako takovou finální sladkou tečku za celou tou RS2 anabází. Jenže v tu chvíli jsem neměl čas se tím zabývat. Tak uvidím, třeba se k tomud ostanu.

    • mikrom mikrom napsal:

      Ony byly vlastně tři fáze migrace.
      1. export dat z databáze RS2, konverze, import do WP na localhostu – toho jsem se bál a nebylo to zas až tak strašný. Prostě pokus omyl, a cca po týdnu večerního hraní to vypadalo ok. I když jsem se snažil vykosit zbytky Texy apd, tak jsem stejně ručně projel všechny příspěvky abych vyházel zbytky HTML, smajlíky vkládané jako obrázky, nesmyslné DIVy, apd.
      2. pořešení souborů – peklo. Chtěl jsem držet strukturu souborů ve stylu WP, takže jsem vše ručně nahrával k příspěvkům, znova dělal galerie, vkládal obrázky do textů.. no alespoň jsem to hezky prošel. A nadělal si spoustu problémů s nutností přesměrování obrázků k těm pár hodně vyhledávaným.
      3. migrace z localhostu na server. Jsou na to nějaké pluginy, ale ty nenahradí vše (třeba odkazy v rámci nějakých menu, pluginů, ..), takže jsem to taky dělal na několikrát, a stejně občas narazím na nějaké pozůstatky.

      Kapitola sama pro sebe je naučit se s WP, a poladit ho k obrazu svému. Chtěl jsem co nejméně pluginů (představa byla třeba 5) no jsem asi na dvaceti a z toho jsem si tři napsal, takže už jsem velký WP guru! 😀

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

five × 4 =