Čas od času přesouvám weby ve WordPressu vývojového prostředí na mém počítači (http://localhost/nejakyweb) do ostrého provozu na http://www.nejakyweb.cz. Narazil jsem na problém se serializací hodnot v databázi. Jak tento problém vyřešit, najdete v následujícím článku.
Standardně vytvářím weby ve WordPressu ve svém počítači. Jakmile mám web vytvořený a chci jej předvést klientovi, přesouvám jej na hosting. O tom jak přesouvat WordPress se někdy více rozepíši:-) Hlavním úskalím přesunu je nahrazení URL v databázi. Je nutné při přesunu nahradit http://localhost/nejakyweb za http://www.novyweb.cz. U pouze jednojazyčných webů to jde hravě a bez problémů – buď nahrazením v dumpu databáze nebo pomocí SQL.
Vícejazyčné weby a šablony
Pokud používáte šablony, které ukládají serializovaná data do databáze, narazíte po spuštění ostrého webu na to, že veškeré nastavení, jež jste provedli na localhostu se vymazalo. Je to z důvodu serializování řetězců, kdy se pro každý řetězec do databáze vloží i přesný počet jeho znaků. Pokud se název na localhostu a na ostrém webu liší v počtu znaků, nastavení šablon se vymaže.
Ukázka serializace: s:20:"http://localhost/abc"; s:17:"http://www.abc.cz ";
Jak předejít ztrátě nastavení?
Naštěstí existují pomocné nástroje, které dokáží nahradit URL v databázi i s přepsáním počtů v serializovaných datech. Našel jsem jich několik a vyzkoušel dva:
WordPress (and others) Search and Replace Tool
Peach.
Prvně jmenovaný mi rozhodil kódování diakritiky u všech textů, proto jsem jej nahradil online nástrojem Peach, který fungoval naprosto bez problémů. URL nahradil a po přesunu na novou web fungoval, tak jak měl. Všechna nastavení zůstala zachována.
Dále lze použít nástroj:
WP Migrate DB, který jsem ovšem netetoval
Doufám, že tyto nástroje Vám pomohou s úspěšným přesunem Vašeho WordPress webu a že Vám ušetří i dost časuJ Pokud se Vám web nepodaří přesunout, kontaktujte mě a podíváme se na to společně:-)