Export a import dat ve WordPressu

Pro export a import dat lze použít několik nástrojů, některé z nich jsou součástí WordPressu, některé z nich nabízí hosting. Proto se vždycky hodí znát a chápat principy databáze a souborů uložených na disku (jakože databázi na serveru mezi soubory nenajdete). Mnoho dat lze z WordPressu exportovat právě touto formou, to znamená na nejnižší úrovni prostřednictvím fyzických souborů a databáze. K tomu ale až na konec.

Obsah

  1. Export a import dat
  2. Nástroje > Export
  3. Zpracování zdroje dat
  4. Nástroje > Import
  5. Export a import dat pomocí pluginů
  6. Export a import nastavení šablon
  7. Práce s databází
  8. Přenos dat pomocí wp-cli

Export a import dat

V zásadě se pro přenos dat exportem používají následující typy/formáty souborů:

  • XML, v něm párové značky vytvářejí strom,
  • CSV, první řádek bývá popis sloupců, hodnoty jsou na řádku oddělené čárkou (comma) nebo středníkem,
  • JSON, závorkové pole klíč:hodnota nebo klíč:pole hodnot, mohou se vnořovat.

PDF není formát přenosu dat, nelze z něj nic importovat, stejně tak XLS, který je proprietární (uzavřený, patentovaný, použitelný de facto primárně v Excelu), ODS je sice tabulka pro LibreOffice, ale také se pro export nepoužívá. Soubory mají být prostě textové, což všechny výše uvedené splňují.

Nástroje > Export

Prvním nástrojem, který můžeme pro export a import použít, je v nabídce Nástroje. Výstupem tohoto příkazu je soubor ve formátu XML, což je standardní textový formát příbuzný s formátem HTML (v němž se vytvářejí webové stránky). Soubor XML obsahuje odkazy na takzvané jmenné prostory, namespace, které definují význam struktury uvnitř XML souboru.

V případě exportního souboru jde o rozšíření formátu používaného pro RSS feed (tedy jmenný prostor je založený na RSS). Rozšířený je o možnost ukládat informace o uživatelích, uživatelských polích, taxonomiích a další vazbách na jiná data ve WordPressu.

Exportovat lze všechny datové typy uložené v tabulce _posts (asi vyjma revizí), tedy všechny články. Pokud máte na webu různé custom post types, pak se zde automaticky objeví a je možné je exportovat. Standardně jde samozřejmě o příspěvky, stránky a přílohy; stáhnout lze i veškerý obsah celého webu nebo jen jeho část (ale to nejde u vlastních typů).

Mezi běžnými typy článků se objevují i různé pomocné datové typy, které koncový uživatel nevyužije. Mohou to být prvky nebo pomocné šablony pro grafický vzhled, slevové kupony pro WooCommerce, varianty produktu nebo třeba transakční záznamy (např. se dívám na web, kde je plugin Wholesale For WooCommerce a ten ukládá požadavky na vytvoření uživatele s oprávněním pro velkoobchodní nákupy).

Export a import bloků pro Gutenberg

Pokud byste chtěli exportovat opakovaně používané bloky z Gutenbergu, položku nenajdete, ale proto čtete tento článek, kde se to dozvíte. 🙂

Jde o adresu /wp-admin/edit.php?post_type=wp_block a bloky lze exportovat pouze po jednom. Z principu věci (jsou napsané v Reactu, což JS framework) jsou ve formátu JSON. Tamtéž lze vybrat soubor typu JSON a blok importovat (ale to lze snadněji přímo přes clipboard při editování dokumentu).

Našli jsme šev, hranu mezi starým a novým WordPressem!

Zpracování zdroje dat

Po exportu data obvykle nějak upravujeme, než je zase importujeme. Někdy je třeba něco smazat, něco jinak propojit nebo sloučit dva různé datové zdroje. Hlavní je klíč, unikátní identifikátor jednotlivých datových řádků. To bývá nejčastěji id postu. Podle něj lze vyhledávat, vytvářet relace.

Skoro vždy soubory upravuji v LibreOffice Calc. Standardně načítá CSV a má průvodce, kde je vidět, jestli se data načítají správně. Dokáže ale také načíst XML soubor (Data > XML zdroj) a vytvořit z něj tabulku. A pak samozřejmě uložit CSV.

Kdybyste chtěli data převést do CSV jinak, můžete využít některý z online nástrojů (na to nemám odvahu, data jsou příliš cenná) nebo zkusit nějakou aplikaci. Párkrát jsem na to šel jinak, píšu o tom ke konci tohoto článku..

Nástroje > Import

Soubor XML dříve exportovaný tímto způsobem z WordPressu je možné v nabídce Nástroje > Import opět do (jiného) WordPressu nahrát. Můžete tak rychle a efektivně přenášet obsah webu.

Pro úspěšný import je nutné splnit výchozí požadavky:

  • V systému musí být aktivní ty pluginy, které zajišťují funkčnost vlastních datových typů (custom post types). Pokud chcete importovat například produkty a nebudete mít aktivní plugin WooCommerce, data se nenaimportují, v průběhu se zobrazí informace o přeskočení záznamu.
  • Nebojte se import spustit vícekrát, pokud se vše nestihne během limitu pro běh procesu. Existující položky se přeskakují. Z toho vyplývá, že je není možné aktualizovat.
  • Častým problémem bývá příliš malá velikost souboru nastavená na hostingu. Pokud vám WordPress nabízí maximální velikost souboru například 2 MB, ve WordPressu to neovlivníte. Je nutné změnit nastavení přímo na hostingu (v sekci webový server, jde o post_max_size). Asi není potřeba dodávat, že právě toto může být zpoplatněno. (Na obrázku příklad Českého hostingu.
  • Raději zopakuji, že při importu se nenahrají obrázky a další soubory (pokud jste nepoužili výše uvedený plugin). Ty je nutné přenést na server ručně (obvykle stačí přímé kopírování přes FTP), nebo použít jejich extra export/import – typ Média (viz obrázek výše).

Export a import dat pomocí pluginů

Pluginů pro export a import dat je velké množství, nejlepší výsledky mám s pluginy WP All Import & Export, na druhou stranu velmi dobře poslouží i malé jednoúčelové importní pluginy, například Import and export users and customers. Obvykle je totiž hlavním problémem logika pro export nebo import, nikoliv množství dat nebo schopnost uložit je v daném formátu. Jinými slovy – exportovat objednávky uživatelů, kteří utratili více než X peněz a v custom fields mají jako zdroj, že přišli z Facebooku, už není triviální úkol. To už je mnohdy lepší napojit na databázi nějaký externí analytický nástroj.

Plugin WP All Import/Export je velmi dobře navržený a pomocí něj je možné přesně stanovit, která data se mají updatovat, která ne. Velkou výhodou je možnost ovlivnit proces vlastní funkcí napsanou v PHP, což jsem využil při párování příspěvků a komentářů podle id uloženého v custom (u CPT) a meta fields (u komentáře). Přenášeli jsme totiž na WordPress starý web postavený na nějakém CMS a bylo nutné vytvořit vlastní strukturu pro diskuze.

Export a import nastavení šablon

Pravděpodobně každá šablona umožňuje exportovat a následně importovat své nastavení. Tato volba bývá začleněna do nastavení šablony a i když je u každé šablony jiná, přenášená data bývají stejná – jde o obvykle JSON. Jinými slovy jsou to konfigurační data převedena do dlouhého řetězce, často překódovaná, aby nebylo patrné, co je v řetězci skryto. Obvykle stačí soubor přenést prostřednictvím schránky (clipboardu). (Na obrázku je vidět, že prohlížeč – zde je to LibreWolf – dokáže JSON hezky čitelně zobrazit.)

Práce s databází

Pro technika je důležité, aby se uměl orientovat v databázi WordPressu a dokázal některé úkoly řešit přímo tam. Třeba exportovat jeden web z multisitu je na úrovni databáze vcelku snadné, samozřejmě pokud víte co a proč děláte. Měli byste tedy vědět, kde jsou data uložená, jak jsou mezi sebou propojená a jak je můžete změnit. K exportu a importu už zbývá jen krůček.

Správci databáze Adminer nebo PHPMyAdmin umožňují exportovat data ve formátu CSV, která pak můžete načíst ve spreadsheetu (Excel, Calc). Doporučuji export také rovnou komprimovat gzipem.

Vyberte odpovídající tabulky, nezapomeňte zatrhnout, že chcete nejen strukturu, ale i data (druhý sloupec tabulky). Vidíte předpokládaný počet datových záznamů. Podle programu, který pak budete používat pro zpracování, vyberte jako oddělovač čárku, nebo středník, hraje to roli.

Export databáze v Admineru
Export databáze v Admineru

Pak můžete soubor otevřít třeba v tom LibreOffice Calcu, který je zdarma ke stažení. Vyberte, že jsou sloupce odděleny středníkem/čárkou, že hodnoty jsou uvozeny složenými závorkami. Určitě nebudete chtít jako oddělovač tabulátor, ale někdy to může být úplně jiný znak. To vše jde zadat. Dokonce můžete pro jednotlivé sloupce nastavit typ hodnoty – na sloupec kliknete (na obrázku je s černým pozadím) a v seznamu nad tabulkou vyberete typ. Pak se soubor otevře, můžete jeho obsah upravit a následně opět uložit jako CSV, opět budete mít na výběr podobné parametry (čárka, středník, uvozovky).

Pomocí Admineru ho můžete importovat. Je potřeba jít do konkrétní tabulky a úplně dole aktivovat odkaz Import.

Standardní import (vlevo nahoře) slouží pro nahrání celé databáze. Pokud má pár mega, stačí prohlížečem. Pokud má pár set mega, pak už je potřeba

  • soubor zkomprimovat pomocí algoritmu zip nebo gzip,
  • nahrát pod jménem adminer.sql[.zip] na místo, kde je na serveru samotný Adminer,
  • ujistit se, že máte na serveru dostatečně dlouhý čas na provedení importní úlohy,
  • stisknout tlačítko pro Import – proběhne přímo na serveru, ne přes prohlížeč, bude tedy významně rychlejší.

Přenos dat pomocí wp-cli

Práce s wp-cli je velmi pohodlná, pokud vládnete příkazovou řádkou. Každý z pluginů dnes přidává svůj modul také do wp-cli. Nebo to chápejme tak, že pluginy fungují také v textovém rozhraní WordPressu, což je wp-cli.

  • wp ai1wm je rozhraní pro plugin All-in-One WP Migration,
  • wp all-import pro WP All Import,
  • wp import a wp export odpovídá položkám v nabídce Nástroje
  • a tak dále (wp je zde zkratka pro wp-cli)

Samozřejmě jsou tam také další příkazy, ale tento článek je o exportu a importu dat.

Dozvěděli jste se něco nového? Napište nám.

Newsletter Rádce pro správce

Každou středu rozesíláme část svého know-how, které jsme pracně získali během posledních let. Zadarmo každému, kdo má zájem stát se zkušeným správcem WordPressu. Není určený našim zákazníkům, nýbrž našim kolegům v oboru. Vracíme tak komunitě to, co jsme získali od jiných. Podívejte se do jeho archivu.